EntityFramework Extended 是EF的扩展,可以批量删除或更新数据表 ,非常方便
例: 以下代码 为批量删除 f01字段>=3的记录
myContent db = new myContent(); db.Tbl01.Where(o => o.f01 >= 3).Delete(); db.SaveChanges();
结果: 在MSSQL中能正常执行, 但换到Mysql后就不行了.
Git: https://github.com/loresoft/EntityFramework.Extended.git
根据错误提示检查源码发现, 生成的SQL语句 完全是按MSSQL来生成的. 原本以为Extended不支持Mysql,查看源码才知道原本就是支持Mysql的. 只是在生成SQL语句的时候默认是按MSSQL来生成而已.
程序做如下修改
1. 表名的数据库架构前缀默认为 dbo, 需在DbContext类中将默认的数据库架构改为空
public class myContent : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(""); base.OnModelCreating(modelBuilder); } // ...... }
2. 列名,表名均用 [ ] 括起来, 在program.cs 最前端插入以下代码
[STAThread] static void Main() { EntityFramework.Container container = new EntityFramework.Container(); EntityFramework.Locator.RegisterDefaults(container); container.Register<EntityFramework.Batch.IBatchRunner>(() => new EntityFramework.Batch.MySqlBatchRunner()); EntityFramework.Locator.SetContainer(container); ...... }