我正在开发一个Database First项目,我正在使用EntityTypeConfiguration
类来设置我的模型的Fluent定义(使用"反向工程师代码优先"工具来获取初始类)。
在我的一组课程中,我有一个非标准的关键字n,它将两个对象关联成一对多的关系。这是一组示例。
class Foo
{
public int FooId {get; set;}
public string SomeData {get; set;}
public virtual ICollection<Bar> Bars {get; set;}
}
class Bar
{
public int BarId {get; set;}
public int ThisIntPointsToFooId {get; set;}
public virtual Foo Foo {get; set;}
}
当我创建EntityTypeConfiguration<Foo>
和EntityTypeConfiguration<Bar>
时,我是否需要从两侧定义关系,或者我可以从一方进行,另一方则将其接收?
class FooMap : EntityTypeConfiguration<Foo>
{
//(Snip other members)
this.HasMany(t => t.Bars).WithRequired(t => t.Foo).HasForeignKey(t => t.ThisIntPointsToFooId);
}
class BarMap : EntityTypeConfiguration<Bar>
{
//(Snip other members)
this.HasRequired(t => t.Foo).WithMany(t => t.Bars).HasForeignKey(t => t.ThisIntPointsToFooId);
}
答案 0 :(得分:2)
一个映射就足够了 - 在我看来实际上更好。如果你想改变某些东西 - 比如让FK可以为空并且关系可选(HasOptional
/ WithOptional
)或者将WillCascadeOnDelete(false)
添加到关系中 - 你不必关心两个映射,但只改变一个地方。