2017-02-08 1 views
6

Meine Frage ist ähnlich wie this ein, aber in diesem Fall ich eine Sammlung Eigenschaft auf dem Elternteil die childeren verweisen:EF-Code Erster Fremdschlüssel ohne Navigationseigenschaft, aber mit übergeordneter Auflistung Eigenschaft

public class Parent 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Child> Children { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
    public int ParentId { get; set; } 
} 

Und genauso wie mit der zitierten Frage will/brauche ich keine Parent Eigenschaft auf Child.

Also wie sollte die folgende Syntax geändert werden, um die Beziehung zu definieren?

modelBuilder.Entity<Child>() 
    .HasRequired(c => c.Parent) <---- no such property "Parent" 
    .WithMany(p => p.Children) 
    .HasForeignKey(c => c.ParentId); 

Antwort

6

Sie können WithRequired Methode ohne Parameter verwenden:

modelBuilder.Entity<Parent>() 
    .HasMany(p => p.Children) 
    .WithRequired() 
    .HasForeignKey(c => c.ParentId); 

With Teil leer gelassen werden, wenn es keine inverse Navigationseigenschaft ist.

+0

Ah - ich erkannte nicht, dass die Zuordnung am Ende der Eltern definiert werden konnte. Dies funktioniert in der Praxis (EF hält die Beziehung beim Erstellen, Löschen usw. aufrecht). – BCA

+0

Ja, die Eins-zu-Viele-Beziehung wird in Ihrer Datenbank erstellt, sodass die Beziehung beibehalten wird, wenn Sie alle CRUD-Operationen ausführen – octavioccl

Verwandte Themen