【问题标题】:EF 5.0 Code First Stand Alone TableEF 5.0 Code First 独立表
【发布时间】:2012-12-23 22:50:35
【问题描述】:

我正在使用 EF 5.0 Code First 开发一个包含多个关系数据库表的应用程序。在我尝试添加没有任何关系的表(独立)之前,这非常有效。我的数据库中需要一些这些参考/查找表。我像其他类一样编写我的类,但 EF 似乎忽略它们并且不创建它们。有什么我需要告诉 EF 这些应该独立构建的吗?如何?非常感谢任何指导。

【问题讨论】:

  • 你是如何告诉 EF 这些表格的?您是否在上下文中为它们添加了映射或为这些实体创建了 DbSet 属性?
  • 它们没有映射,但我仍然需要创建我没有做的 DbSet 属性。这解决了它。如果您回复为答案,我将选择您的回复。谢谢。

标签: .net entity-framework ef-code-first entity-framework-5


【解决方案1】:

要让 EF 创建一个表,您需要在您的 DbContext 中添加一个 DbSet<T>,假设您有这个,它将创建表。

对此的一个警告是,如果你有一个外键指向不在你上下文中的东西,EF 也将假定它是数据库的一部分并创建它。我认为这就是您所看到的行为。

【讨论】:

  • 我没有在问题所在的上下文中添加 DbSet。它现在创建表。谢谢大家。
【解决方案2】:

EF 对“独立”表应该没有任何限制。

当您构建一次 EF 表时,必须进行其他更改

  • 更新 Context 类(DbContext 的子类)
  • 添加迁移脚本(生成将使用新表等更新数据库的 API 调用)
  • 更新数据库(运行迁移脚本)。

你可以找到非常好的教程here

【讨论】:

  • 您能否澄清“不应该”或“不应该”并指出我可以在哪里验证这一点?另外,我在开发过程中使用 DropCreateDatabaseAlways 作为我的初始化程序,所以还不需要迁移。
  • 在我看来,EF 没有对“独立”表有任何限制。我一直在几个项目中使用 EF 5(带有“独立”表),并且从未遇到过任何问题(尤其是当您使用 DropCreateDatabaseAlways DB 初始化时)。但是,我使用了 should not,因为您可能遇到了错误。也许在描述中添加更多代码会给我们一些线索。
  • 你是对的。正如卢克在上面指出的那样,我未能在上下文中输入 DbSet 。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
相关资源
最近更新 更多