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(); } }
}
}

EF初始化mysql数据库codefirst的更多相关文章

  1. EF 连接MySQL 数据库  保存中文数据后乱码问题

    EF 连接MySQL 数据库  保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...

  2. Linux 命令行初始化MySQL数据库

    作为一个技术纯小白,在Linux服务器初始化MySQL数据库的时候遇到了一点小问题: ​ 1.不会使用MySQL图形工具,几乎没玩过 ​ 2.客户的VPN没有开放3306端口,没法用navicat等工 ...

  3. VS2013使用EF与mysql数据库.

    一个VS2013的mvc+EF+mysql的项目,需要连接Mysql数据库 一,下载一个mysql-for-visualstudio-1.2.3.msi,在自己的电脑上安装,这个是解决在创建实体模型( ...

  4. 使用EF操作Mysql数据库中文变问号的解决方案

    问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号.但是使用Mysql API却不会. 原因排查:首先想到的肯定是数据库编码问题,一次查询了表 ...

  5. .net core 2.1 Ef 连接Mysql数据库 DB first

    本文介绍.net core2.1版本下 Mysql数据库采用DB first方式使用Ef 点击查看更简单的方法 1. 新建基于.net core2.1的项目(略) 2. 从nuget中引用Micros ...

  6. ef查询mysql数据库数据支持DbFunctions函数

    1.缘由 快下班的时候,一同事说在写linq查询语句时where条件中写两时间相减大于某具体天数报错:后来仔细一问,经抽象简化,可以总结为下面的公式: a.当前时间 减去 某表时间字段 大于 某具体天 ...

  7. 初始化mysql数据库提示缺少Data:dumper模块解决方法

    初始化默认数据库运行此命令:/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ 出现错 ...

  8. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  9. EF连接mysql数据库生成实体模型

    声明:本人也是第一次用EF连接mysql生成实体模型 经过试验: mysql-connector-net-6.6.6 可以支持VS2012 mysql-connector-net-6.3.9 可以支持 ...

随机推荐

  1. 8-15-Exercise

    8-15-小练 这次的题目......只觉得泪奔啊......T T A.HDU 1042   N! 因为0<=n<=1000,故一定要用数组或字符串[同样因为n<=1000故用数组 ...

  2. git 删除分支和删除文件夹

    1.删除分支 1.1查看所有分支: git branch -a 得到结果: 1.2删除HEAD分支 git push origin --delete HEAD 2.删除文件夹 2.1 查看本地分支下的 ...

  3. 判断URL是否能链接成功

    判断网络文件 存在 3秒之内返回结果 方法2:         /// <summary>         /// 判断网络文件是否存在 1.5秒得到出结果 如这样的格式  http:// ...

  4. SECURITY_ATTRIBUTES 设置低权限

    Windows 从 Vista 開始又一次改动了其系统的权限管理机制,于是如今就会碰到一些 xp 能过而 win7 不能过的代码.比方 Service 程序和一般应用程序用共享内存的方式来通讯,Cre ...

  5. 用Java对xml文档进行遍历,更新,创建,删除

    import java.io.File;import java.io.FileInputStream; import javax.imageio.stream.FileImageInputStream ...

  6. Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)

    1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题)  (2)长度有限不能超过4K(h ...

  7. mysql远程连接错误提醒:2013-Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

    因为没有匹配/etc/hosts.allow. 解决方法: 1.在hosts.allow 文件中添加 mysqld:ALL [root@ucDB204 ~]# cat /etc/hosts.allow ...

  8. 深入理解计算机系统第二版习题解答CSAPP 2.6

    使用打印字节的方式可以知道十进制数12345的十六进制为0x00003039,十进制浮点数12345.0的十六进制为0x4640E400. 转换为二进制为 /* 0 0 0 0 3 0 3 9 *** ...

  9. Magento模型和ORM基础

    对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Magento来说,模型占据了一个更加重要的位置,因为它常常包含了一部分商业逻辑代码(可以说它对,也可以说它错).这些代码在 ...

  10. js 字符串编码转换函数

    escape 方法 对 String 对象编码以便它们能在所有计算机上可读, escape(charString) 必选项 charstring 参数是要编码的任意 String 对象或文字. 说明 ...