日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Autofac的使用

發(fā)布時間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Autofac的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Autofac的使用過程,以下為模板

配置:

1、Demo.Repository(1)NuGet包:①EntityFramework②Z.EntityFramework.Extensions③Z.Expressions.Eval④Z.EntityFramework.Plus.EF6注:②③為④的依賴項,先安裝②③再安裝④

2、Demo.Service(1)NuGet包:①Autofac②Autofac.Mvc5(2)引用:Demo.Repository

3、Demo.Mvc(1)NuGet包:①EntityFramework②Autofac③Autofac.Mvc5(2)引用:Demo.Repository、Demo.Service

數(shù)據(jù)庫映射

在Demo.Repository添加數(shù)據(jù)庫映射后,將Demo.Repository下的App.Config中關(guān)于數(shù)據(jù)庫連接的相關(guān)配置復(fù)制粘貼于Demo.Mvc下的Web.config中

AutofacConfig.cs

public static class AutofacConfig?? ?{?? ??? ?private static IContainer _container;?? ??? ?public static void InitAutofac()?? ??? ?{?? ??? ??? ?var builder = new ContainerBuilder();?? ??? ??? ?//注冊數(shù)據(jù)庫基礎(chǔ)操作和工作單元?? ??? ??? ?builder.RegisterGeneric(typeof(BaseDAL<>)).As(typeof(IBaseDAL<>)).PropertiesAutowired();?? ??? ??? ?builder.RegisterType(typeof(UnitWork)).As(typeof(IUnitWork)).PropertiesAutowired();?? ??? ??? ?//注冊service層?? ??? ??? ?builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).PropertiesAutowired();?? ??? ??? ?// 注冊controller,使用屬性注入?? ??? ??? ?builder.RegisterControllers(Assembly.GetCallingAssembly()).PropertiesAutowired();?? ??? ??? ?注冊所有的ApiControllers?? ??? ??? ?//builder.RegisterApiControllers(Assembly.GetCallingAssembly()).PropertiesAutowired();?? ??? ??? ?builder.RegisterModelBinders(Assembly.GetCallingAssembly());?? ??? ??? ?builder.RegisterModelBinderProvider();?? ??? ??? ?// OPTIONAL: Register web abstractions like HttpContextBase.?? ??? ??? ?//builder.RegisterModule<AutofacWebTypesModule>();?? ??? ??? ?// OPTIONAL: Enable property injection in view pages.?? ??? ??? ?builder.RegisterSource(new ViewRegistrationSource());?? ??? ??? ?// 注冊所有的Attribute?? ??? ??? ?builder.RegisterFilterProvider();?? ??? ??? ?// Set the dependency resolver to be Autofac.?? ??? ??? ?_container = builder.Build();?? ??? ??? ?//Set the MVC DependencyResolver?? ??? ??? ?DependencyResolver.SetResolver(new AutofacDependencyResolver(_container));?? ??? ??? ?//Set the WebApi DependencyResolver?? ??? ??? ?//GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)_container);?? ??? ?}?? ?}

DLL層

實現(xiàn)類(接口類不寫)

BaseDAL.cs

public class BaseDAL<T> : IBaseDAL<T> where T : class, new()?? ?{?? ??? ?private CompressorTestContext dbContext = new CompressorTestContext();?? ??? ?/// <summary>?? ??? ?/// 查找單個,且不被上下文所跟蹤?? ??? ?/// AsNoTracking:能從數(shù)據(jù)庫獲取數(shù)據(jù)?? ??? ?/// </summary>?? ??? ?public T FindSingle(Expression<Func<T, bool>> exp)?? ??? ?{?? ??? ??? ?dbContext.Configuration.ProxyCreationEnabled = false;?? ??? ??? ?return dbContext.Set<T>().AsNoTracking().FirstOrDefault(exp);?? ??? ?}?? ??? ?public IQueryable<T> Find(Expression<Func<T, bool>> exp = null)?? ??? ?{?? ??? ??? ?var dbSet = dbContext.Set<T>().AsNoTracking().AsQueryable();?? ??? ??? ?if (exp != null)?? ??? ??? ??? ?dbSet = dbSet.Where(exp);?? ??? ??? ?return dbSet;?? ??? ?}?? ??? ?public void Add2(T t)?? ??? ?{?? ??? ??? ?dbContext.Set<T>().Add(t);?? ??? ?}?? ??? ?public void Delete2(T t)?? ??? ?{?? ??? ??? ?dbContext.Entry<T>(t).State = EntityState.Deleted;?? ??? ??? ?//dbContext.Set<T>().Remove(t);?? ??? ?}?? ??? ?public void Update2(T t)?? ??? ?{?? ??? ??? ?dbContext.Set<T>().AddOrUpdate(t);?? ??? ?}?? ??? ?public bool Add(T t)?? ??? ?{?? ??? ??? ?dbContext.Set<T>().Add(t);?? ??? ??? ?return SaveChanges();?? ??? ?}?? ??? ?public bool Delete(T t)?? ??? ?{?? ??? ??? ?dbContext.Entry<T>(t).State = EntityState.Deleted;?? ??? ??? ?//dbContext.Set<T>().Remove(t);?? ??? ??? ?return SaveChanges();?? ??? ?}?? ??? ?public bool Update(T t)?? ??? ?{?? ??? ??? ?dbContext.Set<T>().AddOrUpdate(t);?? ??? ??? ?return SaveChanges();?? ??? ?}?? ??? ?public bool SaveChanges()?? ??? ?{?? ??? ??? ?return dbContext.SaveChanges() > 0;?? ??? ?}?? ?}

UnitWork .cs

public class UnitWork : IUnitWork?? ?{?? ??? ?private CompressorTestContext dbContext = new CompressorTestContext();?? ??? ?public IQueryable<T> Find<T>(Expression<Func<T, bool>> exp = null) where T : class?? ??? ?{?? ??? ??? ?var dbSet = dbContext.Set<T>().AsNoTracking().AsQueryable();?? ??? ??? ?if (exp != null)?? ??? ??? ??? ?dbSet = dbSet.Where(exp);?? ??? ??? ?return dbSet;?? ??? ?}?? ??? ?/// <summary>?? ??? ?/// 查找單個?? ??? ?/// </summary>?? ??? ?public T FindSingle<T>(Expression<Func<T, bool>> exp =null) where T : class?? ??? ?{?? ??? ??? ?return dbContext.Set<T>().AsNoTracking().FirstOrDefault(exp);?? ??? ?}?? ??? ?public void ExecuteSql(string sql)?? ??? ?{?? ??? ??? ?dbContext.Database.ExecuteSqlCommand(sql);?? ??? ?}?? ?}

BAL層

接口類

BaseService.cs

public class BaseService<T> where T : class?? ?{?? ??? ?public IBaseDAL<T> BaseDAL { get; set; }?? ??? ?public IUnitWork UnitWork { get; set; }?? ?}

實現(xiàn)類

public class HandleService:BaseService<sy_sql>

{

BaseDal.where(...)

}

控制器調(diào)用

public HandleService HandleService{ get; set; }

總結(jié)

以上是生活随笔為你收集整理的Autofac的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。