在现有MySQL数据库上使用实体框架4.1 Code-First
本文关键字:框架 实体 Code-First MySQL 数据库 | 更新日期: 2023-09-27 18:15:51
我正在尝试使用MySQL数据库的代码优先方法。
这里的问题是,我不能删除和创建数据库(在我的托管公司),所以我不能在数据库中自动创建表。我看了http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnly和实体框架CTP 4 -代码第一自定义数据库初始化器,但我似乎不能得到我的MySQL工作。
编辑:基本上我正在寻找一个解决方案,像上面的工作-通过只删除和创建表,而不是数据库本身,与MySQL。
有人用这种方法成功了吗?
谢谢
这不是您直接要求的,但它可能会给您类似的结果。
您可以尝试使用代码优先的方法从头开始创建数据库,然后在新数据库和生产数据库之间进行比较,以创建迁移脚本。这些迁移脚本可以在生产环境中执行,而不需要删除表。
我知道这是一种低技术含量的方法,但它可以为您的场景工作。迁移脚本方法正是许多实际公司将DB迁移/提升到更受限制的环境的方法。
如果您对将要对DB进行的更改类型有一个很好的想法,那么您可以为迁移脚本寻找一个代码优先的解决方案,而不是特定于EF的。比如锐利迁移,或者其他类似的工具。
我首先使用现有数据库的代码。你所需要做的就是在网络上设置你的connectionstring。配置如下:
注意:-你的可能会有所不同,因为你使用MySQL。
<connectionStrings>
<add name="PriceCompareEntity"
connectionString="data source=.'SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|'PriceCompare.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
然后确保你的模型类匹配数据库中的表。数据库不会在飞行中被删除和创建,除非它也被告知,就像下面的情况一样,我要求EF在Global.asax
中创建数据库System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData());
欲了解更多信息,您可以先访问EF Code与Existing DB