【发布时间】:2017-07-11 15:57:16
【问题描述】:
我有(无法更改)EF 数据库第一个项目,在模型中没有导航属性。
我想扩展自动生成的模型并添加导航属性
- 生成的模型
//generated.cs
public partial class company
{
public int id { get; set; }
public string name { get; set; }
}
public partial class user
{
public int id { get; set; }
public int company_id { get; set; }
}
- 我想从代码中添加导航属性
//model_extension.cs
public partial class user
{
public company Company { get; set; }
}
我有异常“LINQ to Entities 不支持指定的类型成员 'Company'。仅支持初始化程序、实体成员和实体导航属性。”
我以前使用 CodeFirst。
我明白,我必须将 user.company_id 链接到 Company 但不明白如何用代码(不是设计师)制作这个
【问题讨论】:
-
听起来你需要
ICollection:public ICollection<company> Company { get; set; }。如果不先将模型类包装到受支持的集合中,则不能直接将模型类定义为导航属性。 -
我需要陪伴。获取公司的所有用户 - db.users.Include(x => x.Company).ToList()。但我不想改变 .edmx
-
您的表中应该有外键。 DbFirst 将在生成模型时自动创建导航属性。
-
似乎是您的 LINQ 查询生成的错误。如果您不想稍后更改 EDMX 以重新生成模型代码,请将
public ICollection<company> Company { get; set; }直接放在user类声明中并为两个表使用外键关系。 -
并在关联时使用虚拟关键字。
标签: c# entity-framework linq