EF初始化mysql数据库codefirst

1、添加引用EntityFramework、EntityFramework.SqlServer、MySql.Data、MySql.data.Entity.ef6

或者用NuGet安装EntityFramework、MySql.Data.Entity

2、在配置文件中加入

<configSections>
<!--For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468-->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider></providers>
</entityFramework>
<connectionStrings>
<add name="MySql" connectionString="Server=localhost; Database=wx.mms; Uid=root; Pwd=root; " providerName="MySql.Data.MySqlClient" />
</connectionStrings>

3、新建UserContext类,此类继承DbContext

public class UserDBContext:DbContext
{
public UserDBContext()
: base("name=MySql")
{ }
////去掉表名复数
//protected override void OnModelCreating(DbModelBuilder modelbuilder)
//{
// modelbuilder.Conventions.Remove<PluralizingTableNameConvention>();
//}
public DbSet<model.user> User { get; set; }
}

4、System.Data.Entity;

            //在没有数据库时创建一个,已存在,默认;如果pcontext.Patients.Add(p);添加一条,如果数据库已存在报错
Database.SetInitializer(new CreateDatabaseIfNotExists<UserDBContext>());
//在模型改变时,自动重新创建新的数据库,在开发过程中使用
//Database.SetInitializer(new DropCreateDatabaseIfModelChanges<UserDBContext>());
//每次运行时,都重新生成数据库
//Database.SetInitializer(new DropCreateDatabaseAlways<UserDBContext>()); using (UserDBContext udb=new UserDBContext())
{
//判断数据库是不是已经存在
if (!context.Database.Exists())
{
//如果数据库已存在不加Database.SetInitializer(new CreateDatabaseIfNotExists<PatientContext>());,会报错
udb.Database.Initialize(true);
//直接添加一条数据,会生成数据库和数据,
//udb.Patients.Add(u);
udb.SaveChanges();
}
}

5、在那个项目里面运行,就在那个项目里加上面的配置文件,安装EntityFramework、EntityFramework.SqlServer、MySql.Data、MySql.data.Entity

可以把上面的操作写在、、方法里、、直接在global中调用,程序启动时初始化数据库。

6、还可以同时把数据也初始化,

public class DataInitUser : IDataInitializer<mmsDbContext>
{
public void Initialize(mmsDbContext context)
{
var users = new List<muser>()
{
new muser(){name="张三", user_id=, org_id=, phone_no="", otype=operator_type.admin, enabled=true}
};
users.ForEach(u=>context.user.Add(u));
}
}

初始化方法

 public class mmsDataBuilder
{
public void Build()
{ Database.SetInitializer(new CreateDatabaseIfNotExists<mmsDbContext>());
using (var context = new mmsDbContext())
{
if (!context.Database.Exists())
{
new List<IDataInitializer<mmsDbContext>>() {
new DataInitUser()
可以添加多个实体类
}.Setup<mmsDbContext>(new mmsDbContext());
context.SaveChanges(); } }
}
}

最新文章

  1. 2-部署phpmyadmin
  2. [LeetCode]Lowest Common Ancestor of a Binary Search Tree
  3. angularjs指令系统系列课程(4):作用域Scope
  4. css3实现颜色渐变以及兼容性处理
  5. IOS添加手势识别
  6. web设计经验&lt;五&gt;国外设计师总结的7个找灵感实用方法
  7. Mac修改用户名
  8. UVa12563(DP)
  9. poj 1654 Area(计算几何--叉积求多边形面积)
  10. Java 线程基本知识
  11. java基本类型及其相互转换
  12. NEX 事件
  13. Min_25筛 学习笔记
  14. js根据鼠标和键盘判断页面是否长时间未进行操作
  15. [No0000136]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
  16. conda-使用手册
  17. Ant在MyEclipse中的配置总结
  18. 基于theano的多层感知机的实现
  19. android中使用spinner组件,以key,value的方式
  20. 【LeetCode】215. Kth Largest Element in an Array (2 solutions)

热门文章

  1. linux定时器用法
  2. SimpleDateFormat 转化毫秒到日期时,指定特定的时区
  3. 【转】ST05
  4. Dreamweaver中清除php代码中多余空行的方法
  5. Java开源内容管理CMS系统J4CMS支持静态化直接ftp上传到你的空间了
  6. requestFocusFromTouch , requestFocus
  7. strace
  8. shell 两个rpm包做差分
  9. Java命令行运行参数说明大全--转
  10. Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)