具有外键的表在edmx中生成的类中缺少成员

时间:2014-10-29 17:46:24

标签: c# entity-framework foreign-keys entity-framework-6 ef-database-first

我在数据库中有一个表,它有4个引用它的外键。当我将表添加到edmx时,表和导航属性就在那里。但是,此表中的外键ID丢失,只有虚拟对象存在。

这是.tt文件中生成的下表:

public partial class Device
{
    public int SolutionId { get; set; }
    public string SiteId { get; set; }
    public string Name { get; set; }
    public int SysId { get; set; }
    public Nullable<int> SysType { get; set; }
    public string SerialNumber { get; set; }
    public Nullable<int> ParentId { get; set; }

    public virtual DeviceModel DeviceModel { get; set; }
    public virtual DeviceType DeviceType { get; set; }
    public virtual SolutionApplication SolutionApplication { get; set; }
    public virtual SolutionType SolutionType { get; set; }
}

缺少一些成员:

DeviceModelId, DeviceTypeId, SolutionApplicationId, and SolutionTypeId

为什么会丢失?有没有办法让这些键实际上成为部分类的一部分?

使用EntityFrameworks v6.0.2。延迟加载

1 个答案:

答案 0 :(得分:1)

简而言之,实体框架'将其抽象出来'。

它足够聪明地认识到你的FK代表关系,因此允许你自己处理对象。因此,您不必担心检查FK约束等,例如,SolutionTypeId - 您只需要向SolutionType对象添加Device对象,然后让实体框架对其进行排序。 (当然,如果您尝试添加违反SolutionType PK的新SolutionType,这会导致问题,因此您可能需要先从SolutionTypes表中找到现有对象。

因此,不要将其视为通过FK链接到Device表的SolutionType表,而只需将其视为具有Device的{​​{1}}对象作为财产的对象。当您保存更改时,EF会为您排序数据库(假设您的模型准确无误!)