我有一个现有的ASP.Net Web窗体应用程序,它使用EF Code First和现有数据库,即我使用EF类和DbContext指向现有数据库。
我想为项目提供创建/编辑表/字段的功能,并且想知道人们是否可以推荐最佳方法来执行此操作。我无法使用迁移,因为该项目用于多个不同的服务器/数据库。
我想过使用SqlCommand在Application_Start中的Global.asax文件中添加一些东西。这是一个好主意还是你能建议一个更好的方法来做到这一点,最好是用EF?
我不确定如果有任何代码会有所帮助,请告诉我您是否希望我添加任何代码。
编辑: 根据到目前为止的答案,我觉得我还应该注意到我无法直接访问安装该应用程序的服务器,因为它们属于客户端。项目在本地部署,压缩并上传到网站上供下载。
答案 0 :(得分:1)
使用EF Code First时,您应该使用EF Code First Migrations,尽管您说这是不可能的。
不使用它的唯一原因是多个数据库服务器。您使用分布式事务吗? 否则,唯一的变量是数据库服务器的ConnectionString,EF迁移将为您完成更新SQL模式的所有工作。
答案 1 :(得分:0)
作为应用程序启动的一部分,这可能是一个坏主意 - 它要求应用程序连接到数据库的用户具有升级的权限,以便创建/编辑表。 / p>
您可以使用迁移来使用作为EF NuGet包的一部分的migrate.exe
作为部署过程的一部分来初始化数据库。
在migrations周围阅读更多内容可能也很有用 - 支持多个上下文,每个上下文都可以单独迁移...
或者,您可以将SQL脚本用作部署过程的一部分,但是您需要手动管理SQL ...