【问题标题】:Why is my edmx file not updating为什么我的 edmx 文件没有更新
【发布时间】:2016-02-03 14:51:32
【问题描述】:

我有一个数据库第一个 ASP.NET MVC 5 EF6 项目。我正在使用 VS2015 CE。当我更改我的数据库(SQL Server 2012)时,我会去 VS 更新我的 edmx 文件,如下所示:

  • 在解决方案资源管理器中双击 edmx 文件
  • 在 edmx 文件中,右键单击空白区域并选择“从数据库更新模型”选项
  • 我点击“完成”按钮
  • 我重建解决方案

当我有一个具有列 ID、Column1、Column2 的表并且我将 Column2 更改为 Column2Changed 时,我的 edmx 有一个具有 ID、Column1、Column2、Column2Changed 而不是 ID、Column1、Column2Changed 的​​模型。

此外,当我更改列的数据类型时,此更改不会应用于我的 edmx。

【问题讨论】:

    标签: c# asp.net entity-framework


    【解决方案1】:

    这是 Entity Framework 的一个众所周知的问题。

    “从数据库更新模型”仍然是一个偶然事件。有时有效,但通常无效。

    就个人而言,我只是从我的 .edmx 文件中删除“更新”表,然后重新添加它。那么它似乎工作正常。

    【讨论】:

    • 哇,这还有问题吗?我大约在 3 个版本前遇到过此类问题,这是我停止使用 EF 的原因之一,但我认为他们现在应该已经解决了。
    • (非常安静) 我知道它不再受支持,但是对于基本的数据库任务,我仍然使用“LINQ to SQL”而不是 EF。它只是工作。但它不受支持,所以不要这样做。但它有效。但不要这样做。除非你要。但你不应该。但是你可以。但不应该。我现在就去投票否决自己。
    • 这本身不是一个“问题”...我很确定 EDMX 更新过程的设计不会在数据库之后删除模型中的属性被改变。毕竟,您可以在模型中拥有不映射到数据库表的属性。由程序员决定是否应该删除(孤儿)属性。
    • 顺便说一句,我今天的 .edmx 文件也有同样的问题。我已更改特定字段的类型,但无法让 .edmx 反映此更改。更糟糕的是,它会引发有关其他表(尚未更改)的错误,当我放弃“撤消签出”并恢复到 TFS 中的原始 .edmx 文件时,我仍然得到这些错误。啊啊啊!!! “LINQ 到 SQL”。我不在乎它有多过时和不受支持......它只是有效。
    • ⚠️ 当表对同一个表有多个 FK 时要小心。这会使 EF 开始将引用称为 NameTable、NameTable1、NameTable2,因此如果结构发生任何变化,这些可能会生成使 EF 产生的引用更改此命名顺序,使您的代码编译,但不符合您之前预期的逻辑
    【解决方案2】:

    这对我有用:

    1.更新EDMX文件后构建项目。

    2.在解决方案资源管理器中右键单击您的 .tt 文件。

    3.选择“运行自定义工具”选项。

    这将更新 .tt 文件。

    【讨论】:

    • 我也会在运行自定义工具后重建。
    【解决方案3】:

    确保从更新选项卡中选择对象

    【讨论】:

      【解决方案4】:

      当遇到这个问题时,我通过更改用户名和密码解决了我的问题……所以我想说,确保你的 edmx 中有一个有效的连接字符串

      【讨论】:

        【解决方案5】:

        我曾多次遇到此问题。对于简单的问题,我通过在代码编辑器(打开方式...>源代码(文本)编辑器)中打开来编辑 edmx 文件。

        通过搜索 EntityType Name="your table name" 来查找表。

        通常我看到一个看起来不正确的条目,删除它,保存并关闭文件。照常打开edmx,刷新模型,Presto问题就解决了。

        【讨论】:

          【解决方案6】:

          更新或刷新后并没有得到预期的结果。 我的工作如下: 1.我添加了没有导入的程序。 2. 我用文本编辑器打开 edmx 并添加了具有复杂类型的返回类型,就像其中已经存在的其他类型一样。 3. 像其他程序一样添加所有值。

          这解决了我的问题!

          【讨论】:

            【解决方案7】:

            也许这不合逻辑,但是当我们将空表添加到 Edmx 时,它没有添加。如果添加包含一些记录的表,将解决问题。

            修复:总是发生错误时,当你在记事本中打开edmx时,显示错误,可能你没有主键等等。

            【讨论】:

              【解决方案8】:

              我遇到了同样的问题。最合理的解决方案可能是删除 .edmx 文件并重新生成它。请记住,如果没有任何效果,您应该始终尝试先更新模型,然后执行我刚才所说的操作。

              【讨论】:

              • 与现有答案相比,此答案没有新内容
              • 删除整个 .edmx 文件是不切实际的,并且可能会导致意外错误。完全不推荐。
              猜你喜欢
              • 1970-01-01
              • 2011-08-11
              • 2016-08-29
              • 1970-01-01
              • 1970-01-01
              • 2018-03-21
              • 2011-10-10
              • 2018-03-13
              • 2016-07-18
              相关资源
              最近更新 更多