首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现有MySQL数据库上使用实体框架4.1代码优先

问在现有MySQL数据库上使用实体框架4.1代码优先
EN

Stack Overflow用户
提问于 2011-11-28 18:27:57
回答 2查看 1K关注 0票数 2

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

这里的问题是,我不能删除并创建数据库(在我的托管公司),所以我不能在数据库中自动创建表。我看过http://nuget.org/List/Packages/EFCodeFirst.CreateTablesOnly和Entity Framework CTP 4 - Code First Custom Database Initializer,但我似乎无法在我的MySQL上使用它们。

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

有没有人用过这种方法?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-11-28 18:53:05

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

您可以尝试使用代码优先的方法从头开始创建数据库,然后在新的数据库和生产数据库之间进行比较,以创建迁移脚本。这些迁移脚本可以在不删除表的情况下在生产中执行。

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

如果您对将要对数据库进行的更改类型有一个很好的想法,那么您可以为迁移脚本寻找一种代码优先的解决方案,而不是特定于EF。类似于Sharp Migrations,或者many similar tools中的一种。

票数 1
EN

Stack Overflow用户

发布于 2011-11-28 18:39:50

我首先在现有的数据库中使用代码。您所需要做的就是在web.config中设置连接字符串,如下所示。

注意:-由于您使用的是MySQL,因此您的代码可能会有所不同。

代码语言:javascript
复制
<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中创建数据库

代码语言:javascript
复制
System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData());

欲了解更多信息,请访问EF Code first with Existing DB

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8294466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档