【问题标题】:Updating Entity Framework Model after adding a field to a previous look up only table在将字段添加到以前的仅查找表后更新实体框架模型
【发布时间】:2013-06-12 20:37:54
【问题描述】:

为了更好地说明问题:

我有一个名为 Action 的表,带有关键 AID,我有一个名为 Requirement 的表,带有 RID。

以前我有一个只包含 AID 和 RID 的查找表。

这很好,Action 有一个导航属性 Requirements,Requirement 有一个导航属性 Actions。

我在名为 Requirement_Fulfillment 的查找表中添加了一个名为 Weight 的字段。

我从数据库更新了模型。我运行了自定义工具。

该模型未显示 Requirement_Fulfillment 表。这两个表(Action 和 Requirement)仍然将彼此视为简单的导航属性。

有人知道我做错了什么吗?

【问题讨论】:

  • 也许是个愚蠢的问题,但你确定你是从正确的数据库中刷新的吗?
  • 是的,我应该注意我对一些已更新的表进行了其他小的更改,这些表没有问题。 (即在一个表上更改 nvarchar 的长度并将字段添加到另一个表)

标签: c# asp.net .net sql entity-framework


【解决方案1】:

你以前有一个映射,现在你有一个新实体。

您可能必须在设计器中删除 Action 和 Requirement 之间的关系。然后从数据库中更新您的模型,并确保在Add 选项卡的Tables 分支中检查了查找表。然后你应该有一个基于查找表的新实体,ActionRequirement 实体将与该实体有关系(而不是直接相互映射)。

如果查找表未显示在更新向导中,您可以尝试手动删除对 .edmx 文件中表的任何引用。

【讨论】:

  • 工作就像一个魅力。删除的关系。从数据库更新。在添加屏幕上,选择表(注意:查找表的名称不可见)。关闭并保存模型。在 .tt 实体类文件上运行自定义工具。谢谢
【解决方案2】:

我总是从我的模型中删除表,然后重新添加它们以从数据库中获取最新更新;我认为它是唯一可靠的方法(假设您首先使用 DB)。 “从数据库更新模型”并不像它的名字所暗示的那样。

【讨论】:

  • 当您说删除表时,您是指彼此关联的表吗?
  • 所有这些,或者如果您一直跟踪,则只是更改的那些。复制您的 EDMX 文件以防万一
【解决方案3】:

尝试刷新表格或直接从设计器中删除表格并重新添加它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多