【问题标题】:Code First EF6 strange table layoutCode First EF6 奇怪的表格布局
【发布时间】:2017-06-09 14:25:13
【问题描述】:

我在使用代码优先实体模型时遇到了问题,我正在努力思考如何解决它。

DB-First 模型中,我将拥有以下内容:

CarModels
ID,
Name

CarFactory
ID
Name

CarFactoryModels
CarFactoryID
CarModelID

现在...我尝试在 EF6 中使用代码优先执行此操作,我的课程是:

public class CarModel
{
public int CarModelId {get;set;}
public string Name {get;set;}
}

public class CarFactory
{
public int CarFactoryId {get;set;}
public string Name { get;set;}
public List<CarModels> ModelsMade {get;set;}
}

当我生成迁移并应用它时...数据库假设每个汽车工厂都有一个 UNIQUE 个人,并且架构如下所示:

Table Car Models
int ID AutoIncrement
varchar(255) Name
int CarFactoryID REFERENCES CarFactory_ID

显然,这是不正确的,因为模型是工厂独有的。

问题:

如何让代码优先的 EF6 在继续引用模型的同时识别预期的架构?

【问题讨论】:

标签: c# .net ef-code-first entity-framework-6


【解决方案1】:

您的 CarFactory 知道它有哪些型号,但您的 CarModel 没有参考他们的工厂。

public class CarModel
{
  public int CarModelId { get; set; }

  public string Name { get; set; }

  public virtual ICollection<CarFactory> CarFactory { get; set; }
}

public class CarFactory
{
  public int CarFactoryId { get; set; }

  public string Name { get; set; }

  public virtual ICollection<CarModel> ModelsMade { get; set; }
}

请注意我是如何“虚拟”地相互引用的。你已经读到了here

编辑:我已经做了多对多,正如你提到的,汽车模型可以在多个工厂生产

【讨论】:

  • 但一个车型可能在多个工厂生产。所以我可能有两个工厂有相同的车型。所以模型不应该有对汽车工厂的引用
  • 所以即使我从未真正从模型中引用工厂,我也必须保留对工厂的引用才能获得正确的表结构,对吗?
  • 我确实相信,是的。我最近一直在做一些非常相似的事情,这基本上是我的设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 2018-11-17
相关资源
最近更新 更多