1 bis 0..1 Beziehung im Entity Framework

  • Ich möchte die folgende Beziehung erstellen. Natürlich ist das schmerzlich grundlegend, aber dank EF fällt ich an der ersten Hürde. In meiner Datenbank SubForm ist der Primärschlüssel Id ein Fremdschlüssel, der auf Application.Id verweist (Erzwingen der Beziehungen). Wenn ich eine neue Application EF hinzufüge, klagt ich, dass ich keine SubForm_Id -Zeile habe. Ich möchte dies nicht, da dies offensichtlich ein Duplikat des Primärschlüssels wäre. Kann ich dem Modell einige Anmerkungen hinzufügen, um dies zu klären?

    1 bis 0..1 Beziehung im Entity Framework

    Dies bringt mich zu einem anderen Problem, falls Ich möchte gleichzeitig ein neues Application mit einem neuen SubForm zur Datenbank hinzufügen - wie könnte ich das Application Id bekommen (es wird in der Datenbank als Auto-Inkrement definiert) int) um es auf das SubForm -Objekt zu setzen, oder kann EF dies für mich tun?

    Hilfe wäre willkommen.

    22 November 2011
    Eranga
1 answer
  • EF nimmt normalerweise an, dass Ihre Application -Tabelle eine Skalareigenschaft SubForm_Id hat, wenn Sie eine Navigationseigenschaft vom Typ SubForm haben. Sie müssen die Shared Primary Key-Zuordnung explizit konfigurieren.

     public class MyContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
             modelBuilder.Entity<Application>()
               .HasOptional(a => a.SubForm)
               .WithRequired(s => s.Application);
        }
     }
     

    Sie können beide wie folgt einfügen:

     var app = new Application();
    var subForm = new SubForm { Application = app };
    db.SubForms.Add(subForm);
    db.SaveChanges();
     
    22 November 2011
    Eranga