ef-code-first - 我最好使用类还是仅使用 Entity Framework 外键的 ID?

标签 ef-code-first entity-framework-4.1

基本上,我有一个“身份”表,其中包含 ID 和用户名,我还有另一个表,其中包含某个人“拥有”的条目,因此,我需要有一个链接到身份表的 FK .

例如:“Identity”类 - 整数 ID,字符串用户名。

我只是想知道以下哪一个最好:

  1. “test”类 - int ID、字符串数据、Identity 标识

  2. 类“test” - int ID、字符串数据、int Identity_id - 带有定义为外键的注释。

我个人使用第一个,并且看到 EF 基本上在幕后执行第二个,但我只是想知道优点/缺点是什么以及最好的是什么?

最佳答案

从面向对象的角度来看,第一个更好,因为您可以引用相关对象,并且这是您在处理对象时所期望的。在数据库中,这是通过定义两个记录之间的关系的外键来执行的。

Entity Framework 提供了正确的面向对象的方法(第一个)以及在实体中包含外键属性的方法。原因是暴露FK属性会让一些操作变得更加容易。第二种方法最常见的解决方案是:

public class Test
{
    public int Id { get; set; }
    public string Data { get; set; }
    [ForeignKey("Identity")]
    public int IdentityId { get; set; }
    public Identity Identity { get; set; }
}

您可以访问 FK 属性(property)和实体。这些方法有名称:独立关联(第一个)和外键关联(第二个)。它们之间还有更多差异 - 我在 another answer 中描述了它们.

关于ef-code-first - 我最好使用类还是仅使用 Entity Framework 外键的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5978057/

相关文章:

c# - 如何使用 Entity Framework 4.1 Code First 为数据库中的一对多关系强制建立一对一关系

asp.net-mvc - Entity Framework 4.1 - 现有数据库的代码优先,如何定义类,使用属性或 EntityTypeConfiguration?有什么不同?

c# - 使用 MVC3 保存对复杂模型的更新

entity-framework - Entity Framework 跟踪的开销是多少?

entity-framework - 是否可以在构造最终 SQL 时强制 EF(Code First)忽略派生类型

entity-framework - Entity Framework 错误 : The field X is required

entity-framework - 没有导航属性的 EF Code First 外键

ef-code-first - 在 Entity Framework 中播种多对多数据

c# - 为什么 Entity Framework 返回 null List<> 而不是空列表?

mysql - "Calling ' 读取 ' when the data reader is closed is not a valid operation.",但仅在其中一个包含路径上