如何获得“代码优先”在mysql中更新表
本文关键字:mysql 更新 代码优先 何获得 代码 | 更新日期: 2023-09-27 18:07:06
当c# . NET 4 mvc3和entity-framework 4.1和MySql 5.0.67使用Connector/NET 6.4.3作为堆栈时。我需要配置什么才能让应用程序更新MySql中的表,当有一个域类的变化?
另外,是否有一种方法从域类生成sql/DDL ?
我想使用"代码优先"方法,但当数据库已经存在时,我似乎无法让它更新/创建表。
当将连接提供程序和字符串更改为SQLServer CE时,将同时创建数据库和表。
我试图做一些类似的事情,除了我试图使用SQLite。我刚刚发现这个页面:http://weblogs.asp.net/manavi/archive/2011/05/17/associations-in-ef-4-1-code-first-part-6-many-valued-associations.aspx有一个标题为"获取代码首先生成的SQL DDL"的部分,这似乎应该有助于生成SQL来创建数据库。
你看过数据库吗?SetInitializer方法(http://msdn.microsoft.com/en-us/library/gg679461%28v=vs.103%29.aspx)它使用的一个类型是DropCreateDatabaseIfModelChanges (http://msdn.microsoft.com/en-us/library/gg679604%28v=vs.103%29.aspx)。这也适用于我的SQLServer CE,但我想我发现当前版本的System.Data.SQLite还不支持这个,所以我将不得不以另一种方式创建数据库。
这里有几个问题可能会有所帮助,尽管我不能确定它们是否可以首先应用于代码。
实体框架4.1 -使用T-SQL跟踪和手动部署DDL更改实体框架4 -从模型更新数据库模式。不擦除表数据
祝你好运。我在我的网站kihonkai.com上发布了我的编码进展(将包括EF 4.1,因为我使用它),如果你有兴趣看一看。
我在这里回答了一个类似的问题:实体框架4.1代码首先不创建表
基本上包括:
- 创建继承
DropCreateDatabaseIfModelChanges<YourDbContext>
的YourDbContextInitializer
- 覆盖
Seed()
方法在YourDbContextInitializer
填充初始数据的数据库。 - 重写
YourDbContext
的OnModelCreating(ModelBuilder modelBuilder)
方法并使用Database.SetInitializer(new YourDbContextInitializer());
设置数据库初始化器