Entity Frameworkn Extended 支持 Mysq

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

        ......

     }

 

posted on 2015-12-31 17:58  jerron  阅读(964)  评论(1编辑  收藏  举报

导航