【问题标题】:EF Database first how to update model for database changes?EF Database first 如何为数据库更改更新模型?
【发布时间】:2014-09-09 05:08:55
【问题描述】:

在类库Ado.net Entity Data Model 中生成了POCO 类。这些是第一次很好地生成。但是数据库更改没有得到反映。在edmx 图中右键选择Update Model from Database 显示新创建的表,但即使选择添加表也不添加。

我尝试运行 .tt(通过右键单击并运行自定义工具),但即使它没有根据最新的数据库更改重新生成 Poco 类。

请帮忙

【问题讨论】:

  • 在第二个选项卡上,您是否选择了要刷新的表格?
  • 确保在Update Model from Database之后保存edmx文件

标签: c# .net entity-framework entity-framework-5 entity-framework-6


【解决方案1】:

不是修复,而是解决方法:简单地删除和重新生成 EDMX 和生成的类不是一个选项吗?这就是我所做的,它比使用更新功能要容易得多,而且结果似乎是一样的。您的 POCO 扩展程序仍然保持不变且正常运行。

我首先使用数据库,并且我有我的 SQL 升级脚本、生成的 EDMX 和我在源代码管理中生成的模型以及那里的更改非常易于管理。以下是我对每个版本的数据库升级过程的粗略概述:

  1. 为升级创建 .sql 脚本,如 CREATE TABLE 等语句。
  2. 删除生成的文件:Model.Context.tt、Model.tt、Model.edmx
  3. 从 Web.config 中删除实体字符串(如果您使用它)
  4. 以与第一次相同的方式创建 EDMX 和 Context 文件
  5. 如果您使用源代码管理(我希望您这样做!)检查发生了什么变化
  6. 测试
  7. 提交!

【讨论】:

    【解决方案2】:

    在我的情况下,我需要保存 ModelName.edmx,然后生成类。

    【讨论】:

      【解决方案3】:

      确保 app.config 中的连接字符串正确。我使用的是 DataDictionary,我的连接字符串具有以下路径:

      data source=|DataDirectory|*.sqlite
      

      因此,它没有更新。因为这个 DataDirectory 变量是在运行时解析的。

      【讨论】:

        猜你喜欢
        • 2012-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 2018-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多