我们都知道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实现批量更新和删除的更多相关文章

  1. EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除

    原文链接:http://blog.csdn.net/fanbin168/article/details/51485969   批量插入 (17597条数据批量插入耗时1.7秒)   using Sys ...

  2. Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended

    问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...

  3. MySQL(二)MySQL的安装和简单使用

    1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...

  4. 性能调优之MySQL篇二:MySQL配置文件My.ini配置文件优化

    [mysqld]port = 3306serverid = 1socket = /tmp/mysql.sock skip-name-resolve #禁止MySQL对外部连接进行DNS解析skip-g ...

  5. MySQL(二)MySQL中的存储引擎

    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...

  6. 【转】Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)

    E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对I ...

  7. (转)Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)

    转自:http://www.cnblogs.com/jinzhao/archive/2013/05/31/3108755.html 今天乍一看,园子里居然没有关于这个类库的文章,实在是意外毕竟已经有很 ...

  8. mysql(二)--mysql索引剖析

    1.1. 索引是什么 1.1.1.索引图解 维基百科对数据库索引的定义: 数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询.更新数据库表中数据. 怎么理解这个定义呢?  首 ...

  9. mysql系列二、mysql内部执行过程

    向MySQL发送一个请求的时候,MySQL到底做了什么 客户端发送一条查询给服务器. 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器端进行SQL解析.预 ...

随机推荐

  1. 【JS深入学习】——事件代理/事件委托

    事件代理/事件委托(event delegation) 需求一:当一个div内部有多个事件发生,给每个元素逐个添加事件十分麻烦... 需求二:在项目中我们常常需要动态的添加元素,不可避免的需要为那些未 ...

  2. Android之开源项目汇总

    汇总一:http://www.trinea.cn/android/android-open-source-projects-view/ 汇总二:http://blog.csdn.net/liuhaom ...

  3. mysql 练习 和链接 pymysql 练习题

    python操作数据库 1. 查询student表的所有记录 2. 查询student表的第2条到第4条记录 3. 查询所有学生的学号(id).姓名(name)和报读课程(department)的信息 ...

  4. Windows下安装MySQL详细教程

    Windows下安装MySQL详细教程 1.安装包下载  2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7 ...

  5. 析构方法 deinit

    /* 析构方法: 对象的内存被回收前被隐式调用的方法, 对应OC的dealloc方法 主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等 */ class FileHandle { ...

  6. linux centos7 防火墙及端口开放相关命令

    一.防火墙相关命令 1.查看防火墙状态 : systemctl status firewalld.service 注:active是绿的running表示防火墙开启 2.关闭防火墙 :systemct ...

  7. .Net Core Nuget还原失败

    项目获取后发现所有项目的依赖项全部报黄.. 展开发现所有的Nuget包都没有引用.. 按错误窗口的提示使用解决方案上"Nuget包还原"来解决却没有任何进展.. 错误窗口报文 找不 ...

  8. .NET 如何隐藏Console Application的窗口

    1)创建Console Application工程 2)修改Output type 为Windows Application即可

  9. 一分钟让你学会使用Android AsyncTask

    AsyncTask相信大多数朋友对它的用法都已经非常熟悉,这里记录一下主要是献给那些刚刚接触的Android 或者AsyncTask的同学们,高手请绕道. AsyncTask类是Android1.5版 ...

  10. Java虚拟机(一):JVM简介

    JVM简介 Java虚拟机(JVM)是由Java虚拟机规范定义的,其上运行的是字节码指令集.这种字节码指令集包含一个字节的操作码(opcode),零至多个操作数(oprand),虚拟机规范明确定义了每 ...