我正在尝试对MySQL数据库使用代码优先的方法。
这里的问题是,我不能删除并创建数据库(在我的托管公司),所以我不能在数据库中自动创建表。我看过http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnly和Entity Framework CTP 4 - Code First Custom Database Initializer,但我似乎无法在我的MySQL上使用它们。
编辑:基本上,我正在寻找一个像上面那样工作的解决方案--只使用MySQL删除和创建表,而不是数据库本身。
有没有人用过这种方法?
谢谢
发布于 2011-11-28 18:53:05
这不是您直接要求的结果,但它可能会给您类似的结果。
您可以尝试使用代码优先的方法从头开始创建数据库,然后在新的数据库和生产数据库之间进行比较,以创建迁移脚本。这些迁移脚本可以在不删除表的情况下在生产中执行。
我知道这最终是一种低技术含量的方法,但它可能适用于您的场景。迁移脚本方法正是许多实际公司将数据库迁移/升级到更受限制的环境中的方法。
如果您对将要对数据库进行的更改类型有一个很好的想法,那么您可以为迁移脚本寻找一种代码优先的解决方案,而不是特定于EF。类似于Sharp Migrations,或者many similar tools中的一种。
发布于 2011-11-28 18:39:50
我首先在现有的数据库中使用代码。您所需要做的就是在web.config中设置连接字符串,如下所示。
注意:-由于您使用的是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 first with Existing DB
https://stackoverflow.com/questions/8294466
复制相似问题