1.安装EntityFramework.Extended 或者 Z.EntityFramework.Plus.EF6(推荐)
2.更改MyDBContext配置
namespace EntityFrameworkCore { [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class MyDBContext : DbContext { public MyDBContext() :base("name=Default") { //新增配置 Database.SetInitializer<MyDBContext>(null); } //新增配置(Z.EntityFramework.Plus.EF6不需要) protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(""); base.OnModelCreating(modelBuilder); } public DbSet<User> User { set; get; } //................... } }
3.Global.asax中注册扩展
using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace YFAPICommon { public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); EfExtendedRegister(); } //注册扩展(Z.EntityFramework.Plus.EF6不需要) private void EfExtendedRegister() { var container = new EntityFramework.Container(); EntityFramework.Locator.RegisterDefaults(container); container.Register<EntityFramework.Batch.IBatchRunner>(() => new EntityFramework.Batch.MySqlBatchRunner()); EntityFramework.Locator.SetContainer(container); } } }
4.使用
//注:Delete和Update之后不用再dbContext.SaveChanges(); dbContext.User.Where(u => u.id == 1).Delete(); dbContext.User.Where(u => u.id == 1).Update(u=>new User { nickName="my name"});
//Z.EntityFramework.Plus.EF6 public object future() { //三个值在一次SQL查询中获得,提高查询效率 var query = dbContext.User.Future(); var datalist = query.ToList(); int count = query.Count(); var data = query.FirstOrDefault(); return new { datalist, count, data }; }
//FromCache QueryCacheManager.ExpireAll();//清空缓存 dbContext.User.FromCache().ToList();//从缓存读取