EF初始化mysql数据库codefirst
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的更多相关文章
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- Linux 命令行初始化MySQL数据库
作为一个技术纯小白,在Linux服务器初始化MySQL数据库的时候遇到了一点小问题: 1.不会使用MySQL图形工具,几乎没玩过 2.客户的VPN没有开放3306端口,没法用navicat等工 ...
- VS2013使用EF与mysql数据库.
一个VS2013的mvc+EF+mysql的项目,需要连接Mysql数据库 一,下载一个mysql-for-visualstudio-1.2.3.msi,在自己的电脑上安装,这个是解决在创建实体模型( ...
- 使用EF操作Mysql数据库中文变问号的解决方案
问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号.但是使用Mysql API却不会. 原因排查:首先想到的肯定是数据库编码问题,一次查询了表 ...
- .net core 2.1 Ef 连接Mysql数据库 DB first
本文介绍.net core2.1版本下 Mysql数据库采用DB first方式使用Ef 点击查看更简单的方法 1. 新建基于.net core2.1的项目(略) 2. 从nuget中引用Micros ...
- ef查询mysql数据库数据支持DbFunctions函数
1.缘由 快下班的时候,一同事说在写linq查询语句时where条件中写两时间相减大于某具体天数报错:后来仔细一问,经抽象简化,可以总结为下面的公式: a.当前时间 减去 某表时间字段 大于 某具体天 ...
- 初始化mysql数据库提示缺少Data:dumper模块解决方法
初始化默认数据库运行此命令:/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ 出现错 ...
- Docker容器启动时初始化Mysql数据库
1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...
- EF连接mysql数据库生成实体模型
声明:本人也是第一次用EF连接mysql生成实体模型 经过试验: mysql-connector-net-6.6.6 可以支持VS2012 mysql-connector-net-6.3.9 可以支持 ...
随机推荐
- 辗转相除法求最大公约数和最小公倍数【gcd】
要求最小公倍数可先求出最大公约数 设要求两个数a,b的最大公约数 伪代码: int yushu,a,b: while(b不等于0) { yushu=a对b求余 b的值赋给a yushu的值赋给b } ...
- hdoj 1702 ACboy needs your help again!【数组模拟+STL实现】
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 从CR线下活动学到的:如何组织一个小的线下活动
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf 周末在腾讯组织了GR,活动达到了预期的收获,从这次活动我主 ...
- Linux vmstat具体解释(系统IO)
1. vmstat 能够展现给定时间间隔的server的状态值,包含server的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次 ...
- Bootstrap-分页插件Paginator
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态 ...
- Matplot中文乱码完美解决方式
一.改动matplotlibrc文件 (永久解决方式) 1. 定位matplotlibrc文件 该文件位于[python_install_dir]\Lib\site-packages\matplotl ...
- Java bit、byte、位、字节、汉字、字符
package com.suypower.chengyu.test; public class ByteTest { /** * byte 8 bits -128 - + 127 * 1 bit = ...
- 读<大数据日知录:架构与算法>有感
前一段时间, 一个老师建议我能够学学 '大数据' 和 '机器学习', 他说这必定是今后的热点, 学会了, 你就是香饽饽.在此之前, 我对大数据, 机器学习并没有非常深的认识, 总觉得它们是那么的缥缈, ...
- QT 事件过滤器 eventFilter
在监测的代码里执行需要的行为. 这可以用event Filter来达到. 设置一个event filter有两个步骤: 1. 在目标对象上调用installEventFilter(),将监测对象注册到 ...
- list add元素覆盖之前元素问题思考
最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣 ...