繁体   English   中英

在现有MySQL数据库上使用实体框架4.1 Code-First

[英]Using entity framework 4.1 Code-First on existing MySQL database

我正在尝试对MySQL数据库使用代码优先方法。

这里的缺点是,我无法删除并在托管公司上创建数据库,因此无法自动在数据库中创建表。 我已经看过http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnlyEntity Framework CTP 4-代码优先自定义数据库初始化程序,但是我似乎无法使其与我的MySQL一起使用。

编辑:基本上,我正在寻找一种与上述类似的解决方案-通过使用MySQL仅删除和创建表而不是数据库本身来创建和删除表。

有谁有运气这种方法吗?

谢谢

这不是您直接要求的,但是可能会给您类似的结果。

您可以尝试使用代码优先方法从头开始创建数据库,然后在新数据库和生产数据库之间进行区分以创建迁移脚本。 这些迁移脚本可以在生产环境中执行而无需删除表。

我知道这最终是一种低技术的方法,但它可能适合您的情况。 迁移脚本方法正是许多实际公司将数据库迁移/升级到更受限制的环境的方式。

如果您对将要对数据库进行的更改的类型有一个好主意,则可以为非EF专用的迁移脚本寻找一种代码优先的解决方案。 诸如Sharp Migrations之类的东西,或许多类似工具之一

我首先在现有数据库中使用代码。 您需要做的就是在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代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM