2017-11-21 2 views
2

Ich habe zwei Klassennull auf eins mit nur einem Fremdschlüssel fließend Mapping

public class Foo 
{ 
    public int FooId {get;set;} 
    public virtual Bar Bar {get;set;} 
} 

public class Bar 
{ 
    public int BarId {get;set;} 
    public int? FooId {get;set;} 
    public virtual Foo Foo {get;set;} 
} 

ich fließend Mapping mit Entity Framework bin mit. Wie kann ich die Foo Karte und Bar zusammen, so dass ich haben kann:

One bar und Eins oder Null foo

One foo und Eins oder Null bar

I denke, das ist ein korrektes Schema für die 3. Normalform. Ich weiß, wie es geht, wenn Foo einen BarId Fremdschlüssel hatte, aber das ist nicht der Fall.

+2

Sie müssen die von dieser Einheit zuerst wissen, wird der Auftraggeber und dem der abhängig. – CodeNotFound

+0

In diesem Fall sind beide gleich Principal, beide können ohne die anderen existieren. – Insecurefarm

+0

EF-Regel soll einen Principal auf einer Seite haben: D – CodeNotFound

Antwort

1

tun, was Sie fordern Sie zwei verschiedene unidirektionale Beziehungen konfigurieren müssen:

modelBuilder.Entity<Foo>() 
      .HasOptional(s => s.Bar) 
      .WithMany(); 

modelBuilder.Entity<Bar>() 
      .HasOptional(s => s.Foo) 
      .WithMany() 
      .HasForeignKey(s => s.FooId);  
Verwandte Themen