entity-framework - EntityFramework Codefirst 从数据库更新
问题描述
我知道这不是使用 EntityFramework 的设计方法,但我可以更轻松地在 SQL Management Studio 中设计数据库以创建索引、链接外键等……所有这些都是可视化的。但是我真的很想在将来为客户部署更新时使用自动数据库更新。
我在 SQL Management Studio 中设计了原始数据库,然后首先从该数据库创建了 EntityFramework 代码。但是,到目前为止,如果我想添加另一个表,我最终会删除所有内容,然后从 SQL Management Studio 重新生成数据库。这对于我的框架开发的第一部分来说没问题,但现在事情开始变得有点复杂了。
我试图学习代码优先机制,但一些更复杂的项目让我感到厌烦,我没有太多时间来分配这个。我希望在 SQL Management Studio 中有一种混合设计方式,然后利用 EntityFramework 中内置的数据库部署功能。
解决方案
我正在努力让 POCO 反向生成器在这里运行,但有一些问题。最终,我认为这就是我想要走的路。但我确实找到了一个使用 VS2019 中内置的现有工具的临时解决方法,直到我让该工具工作为止。
我复制了模型的名称,因为我对连接字符串进行了自定义初始化。
删除模型文件
我右键单击我的解决方案中放置 codefirst 文件的文件夹,然后添加新项目
选择 ADO.NET Entity Data Model 并命名 id 与步骤 1 中的相同
从数据库中选择代码优先
取消选择保存连接字符串(它不会覆盖并且需要的已经在app.config中)
选择要导入的表
在我的情况下,我取消选择复数对象名称
结束
使用自定义初始化程序更新主模型文件
在包管理器控制台中输入:add-migration(我假设您已经设置了迁移)
命名迁移
add-migration [第 12 步中的名称](这适用于迁移)
看起来步骤很多,但实际上并非如此。到目前为止,玩了几天,我没有遇到任何问题。
推荐阅读
- reactjs - 尽管匹配了确切的路线,但 React Router 组件不会呈现
- go - 使用 rand.Seed() 填充结构映射仅插入最后一个对象
- aws-lambda - botocore.exceptions.ClientError:调用CreateBucket操作时发生错误(AccessDenied):访问被拒绝
- wix - WiX 组件 GUID 可以在不同的产品安装中复制吗
- javascript - 将 2 个应用程序合并在一起 (ASP.NET MVC - JavaScript)
- javascript - 数组在订阅范围之外变得未定义
- javascript - 是否可以使用 Google Map JavaScript API/JavaScript 在地图上放置一个大圆圈?
- python - 是否有任何不使用 Java 的 mdbtools 替代品?
- matlab - Octave:向/从文本文件写入/读取 f(x,y) 出错
- batch-file - 如何在 bat 中处理下一个命令之前等待应用程序结束?