Czy definiuję relację między dwoma podmiotami zależnymi lub głównym?
Podczas korzystania z Entity Framework, mylę się co do tego, gdzie muszę zdefiniować relację między dwoma elementami. Czuję, że ilekroć szukam przykładów, znajduję przykłady tego samego z dwóch różnych perspektyw - zależnej → głównej, a także głównej → zależnej.
Biorąc pod uwagę następujące podmioty:
class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
class Bar
{
public int Id { get; set; }
public Foo Foo { get; set; }
public virtual Baz { get; set; }
}
class Baz
{
public int Id { get; set; }
public Bar Bar { get; set; }
}
Mamy tutaj kilka scenariuszy.Foo
ma wieleBar
s wskazując na to.Baz
ma opcjonalny klucz obcy doBar
. Baz
może istnieć bezBar
określony.
Gdzie zdefiniowałbym te relacje? Gdzie, mam na myśli, gdy używam płynnego API, który podmiot zdefiniowałby te relacje? Może żeby to było bardziej jasne, gdybym używał płynnego API iEntityTypeConfiguration
klasy do wiązania, dla których by były zdefiniowane?
Przykładem tego, że jestem zdezorientowany, jest to, że widzę takie odpowiedziten które mówią, że jeden do jednego powinien być zdefiniowany w klasie za pomocąvirtual
. Tak więc w tych jednostkach opcjonalny jeden do jednego międzyBaz
iBar
byłoby lub coś podobnego do:
modelBuilder.Entity<bar>()
.HasOptional(f => f.Baz)
.WithRequired(s => s.Bar);