c# - 如何建立适当的代码优先关系

标签 c# entity-framework code-first

我是 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/

相关文章:

c# - EF4 CTP5 Code First 中的级联删除对子记录执行更新

c# - 如何将一个实体映射到 Entity Framework 中的多个实体?

c# - EF 保存到上下文但不保存到数据源

c# - Entity Framework 最佳实践 : What layer should call SaveChanges()?

c# - 如果共享同一父节点的另一个节点等于某个值,如何获取 XML 节点的值?

c# - 为什么 Array 不是泛型类型?

entity-framework - 错误 : The type 'TEntity' must be a reference type

c# - 使用 ASP.NET MVC 3 和 EF 4.1 和 POCO 的复杂关系/访问控制

c# - radiobuttons - 测试是否选中 - 为什么前两种方法失败?

c# - 计算列表中每个不同值的出现次数