ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除
我们都知道Entity Framework 中不能同时更新多条记录,但是一个老外写的扩展库可以实现此功能EntityFramework.Extended,但是如何是mysql数据库要怎么实现呢
首先实现一个自定义类继承于MySqlEFConfiguration:
public class MySqlDBconfiguration : MySqlEFConfiguration
{
public MySqlDBconfiguration()
{
SetExecutionStrategy(MySqlProviderInvariantName.ProviderName, () => new MySqlExecutionStrategy());
}
}
然后程序初始化的时候,修改ef执行环境:
protected void Application_Start(object sender, EventArgs e)
{
EntityFramework.Locator.Current.Register<IBatchRunner>(() => new MySqlBatchRunner());
DbConfiguration.SetConfiguration(new MySqlDBconfiguration());
}
最后实现自定义的dbcontext:
[DbConfigurationType(typeof(MySqlDBconfiguration))]
public class TestContext : DbContext
{
private static TestContext _instance; public static TestContext Instance
{
get
{
if (_instance == null)
{
_instance = new TestContext();
}
return _instance;
}
}
private string _connectionString; public string ConnectionString
{
get
{
if (string.IsNullOrWhiteSpace(_connectionString))
{
_connectionString = ConfigurationManager.ConnectionStrings["testConn"].ConnectionString;
}
return _connectionString;
}
set
{
_connectionString = value;
}
} public TestContext()
: base("name=testConn")
{
_connectionString = ConfigurationManager.ConnectionStrings["testConn"].ConnectionString;
Database.SetInitializer<TestContext>(null);//从不创建数据库,如果不加这句会报错=》An instance of 'MySqlDBconfiguration' was set but this type was not discovered in the same assembly as the 'MySqlHistoryContext' context
}
public TestContext(string connectionString)
: base(connectionString)
{ }
public DbSet<Person> Blogs { get; set; }
public DbSet<DepartPerson> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder
modelBuilder)
{
//如果没有下面这句,会采用mssql的默认schema=> dbo;所有想要使用mysql就应该加上下面这句。。或者再实体映射加上mysql数据库的schema;例如实体类DepartPerson=>特性[Table("DepartPerson", Schema= "test")]
modelBuilder.HasDefaultSchema("");
base.OnModelCreating(modelBuilder);
}
}
具体使用方法:
TestContext testContext = new TestContext();
var id = "";
testContext.Set<DepartPerson>().
Where(c => c.ID == id).Delete();
testContext.Set<DepartPerson>().
Where(c => c.ID == id).Update(c => new DepartPerson { HospitalID = "" });
ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除的更多相关文章
- EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除
原文链接:http://blog.csdn.net/fanbin168/article/details/51485969 批量插入 (17597条数据批量插入耗时1.7秒) using Sys ...
- Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended
问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...
- MySQL(二)MySQL的安装和简单使用
1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...
- 性能调优之MySQL篇二:MySQL配置文件My.ini配置文件优化
[mysqld]port = 3306serverid = 1socket = /tmp/mysql.sock skip-name-resolve #禁止MySQL对外部连接进行DNS解析skip-g ...
- MySQL(二)MySQL中的存储引擎
前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...
- 【转】Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对I ...
- (转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html 今天乍一看,园子里居然没有关于这个类库的文章,实在是意外毕竟已经有很 ...
- mysql(二)--mysql索引剖析
1.1. 索引是什么 1.1.1.索引图解 维基百科对数据库索引的定义: 数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询.更新数据库表中数据. 怎么理解这个定义呢? 首 ...
- mysql系列二、mysql内部执行过程
向MySQL发送一个请求的时候,MySQL到底做了什么 客户端发送一条查询给服务器. 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器端进行SQL解析.预 ...
随机推荐
- django 获取外键对应数据的方式
模型 models.py中 from django.db import models class User(models.Model): name = models.CharField() class ...
- PyMysql复习
参考:http://www.cnblogs.com/liwenzhou/p/8032238.html 使用pycharm操作数据库. 填一个数据库名,User:填root 填写要连接的数据库. 建表. ...
- 使用BeanUitls提高对象拷贝效率
首先来创建两个bean 注:一定要有set/get方法,成员变量必须要同名 public class User1 { String name; String password; String phon ...
- IP等级
IP是Ingress Protection的缩写,IP等级是针对电气设备外壳对异物侵入的防护等级,来源是国际电工委员会的标准IEC 60529,这个标准在2004年也被采用为美国国家标准. 在这个标 ...
- (转)PLSQL Developer 12.0.7连接Oracle12c数据库
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sl1992/article/details/80489413 1.下载安装PL/SQL Develo ...
- linux内核模块的安全
linux可以动态的加载内核模块,在很多场合可能需要确保加载内核的安全性.如果被攻击者加载恶意内核模块,将会使得内核变得极其危险. 当然,稳妥的做法就是给内核模块进行签名,内核只加载能正确验证的签名. ...
- sublime text3在交互时解决input()函数无法使用的问题
1,打开sublime text3工具栏,依次点击View->Show Console菜单打开命令行, 2,在命令行里 输入代码 import urllib.request,o ...
- ID3、C4.5和CART决策树对比
ID3决策树:利用信息增益来划分节点 信息熵是度量样本集合纯度最常用的一种指标.假设样本集合D中第k类样本所占的比重为pk,那么信息熵的计算则为下面的计算方式 当这个Ent(D)的值越小,说明样本集合 ...
- InterView之PHP(2)
PHP 理论知识 常用的超全局变量(8个) $_GET ----->get传送方式 $_POST ----->post传送方式 $_REQUEST ----->可以接收到get和po ...
- Idea 2017.3以后版本的破解(亲测有效)转
转自:http://www.mamicode.com/info-detail-2147137.html 自从升级到idea2017.3之后,之前的license server破解方法貌似已失效.于是找 ...