EntityFramework 6 DatabaseFirst从代码中添加导航属性

时间:2017-07-11 07:28:22

标签: c# entity-framework linq

我有(不能更改)EF DataBase第一个没有模型导航属性的项目。

我想扩展自动生成的模型并添加导航属性

  1. 生成的模型
  2. //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; }
    }
    
    1. 我想从代码中添加导航属性
    2. //model_extension.cs
      
      public partial class user
      {
          public company Company { get; set; }
      }
      

      我有例外"指定的类型成员'公司' LINQ to Entities不支持。仅支持初始值设定项,实体成员和实体导航属性。"

      我之前使用过CodeFirst。

      我理解,我必须将user.company_id链接到公司 但不明白如何使用代码(而不是设计师)

1 个答案:

答案 0 :(得分:1)

在数据库第一种方法中,您通过Entity Framework Designer/ADO.NET Entity Data Model从数据库模式生成POCO对象,因此它不像Code-First那样灵活,您需要继续使用数据库,并自行更改模式并更新您的{{ 1}}文件。虽然可以在c#侧为这些模型添加属性,但它们不会被添加到数据库模式中,

我建议您反转您的数据库架构并采用代码优先方法,此nuget package可以为您执行此操作。

将所有关于Code-First的内容全部翻转后,创建自己的.edmxDbContext并让迁移处理其余部分。然后,您可以使用Eager Loading of EF来加载数据,