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

时间:2011-11-28 10:27:57

标签: c# mysql entity-framework

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

这里的踢球者是我无法删除并创建数据库(在我的托管公司上),因此我无法在数据库中自动创建表。我查看了http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnlyEntity Framework CTP 4 - Code First Custom Database Initializer,但我似乎无法使用我的MySQL。

编辑:基本上我正在寻找一个像上面那样工作的解决方案 - 只使用MySQL来删除和创建表,而不是数据库本身。

有没有人对这种方法有任何好运?

由于

2 个答案:

答案 0 :(得分:1)

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

您可以尝试使用代码优先方法从头开始创建数据库,然后在新数据库和生产数据库之间进行差异以创建迁移脚本。这些迁移脚本可以在生产中执行而不会丢失表。

我知道这最终是一种低技术方法,但它可以适用于您的场景。迁移脚本方法正是很多真实公司在更受限制的环境中进行数据库迁移/升级的方式。

如果您对将要对数据库进行的更改类型有所了解,那么您可以为非特定于EF的迁移脚本寻找代码优先解决方案。类似Sharp Migrationsmany similar tools之一。

答案 1 :(得分:0)

我首先使用现有数据库的代码。您需要做的就是在web.config中设置您的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 first with Existing DB