我是 Entity Framework 的新手,使用 Code-First 模式而不是 DB-First 感觉更有控制力。
我想知道在以编程方式设置 ForeignKey
时更喜欢什么?实体之间的关系。
申报FK_
是否更好?该类中与另一个类相关的属性,还是声明一个 IEnumerable<>
更好?相关类中的属性?
public class IRelateToAnotherClass
{
...
public int FK_IGetRelatedToByAnotherClass_ID { get; set; }
}
或
public class IGetRelatedToByAnotherClass
{
...
public IEnumerable<IRelateToAnotherClass> RelatedTo { get; set; }
}
最佳答案
这完全取决于您希望实体之间的关系类型(一对一、一对多、多对多);但是,是的,您应该声明外键属性。查看此网站 for some examples .
这是你的两个类的一对多:
public class IRelateToAnotherClass
{
public int Id { get; set; } // primary key
public virtual ICollection<IGetRelatedToByAnotherClass> IGetRelatedToByAnotherClasses { get; set; }
}
public class IGetRelatedToByAnotherClass
{
public int Id { get; set; } // primary key
public int IRelateToAnotherClassId { get; set; } // foreign key
public virtual IRelateToAnotherClass IRelateToAnotherClass { get; set; }
}
以及一些 Fluent API 映射:
modelBuilder.Entity<IGetRelatedToByAnotherClass>.HasRequired<IRelateToAnotherClass>(p => p.IRelateToAnotherClass).WithMany(p => p.IGetRelatedToByAnotherClasses).HasForeignKey(p => p.Id);
关于c# - 如何建立适当的代码优先关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435822/