Asp.net mvc中应用autofac
1.nuget安装依赖
2.配置注入规则(Global.asax)
using Autofac; using Autofac.Integration.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace BestExpress { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); #region Autofac注入依赖 var builder = new ContainerBuilder(); SetupResolveRules(builder); builder.RegisterControllers(Assembly.GetExecutingAssembly()); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); #endregion } private static void SetupResolveRules(ContainerBuilder builder) { builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces();
//注册泛型规则
builder.RegisterGeneric(typeof(EntRegCRUDService<>)).As(typeof(ICRUDService<>));
} } }
crud注入Controller
private ICRUDService<X6_EntryRegistration> _crud; public X6_EntryRegistrationController(ICRUDService<X6_EntryRegistration> crud) { _crud = crud; }
//基于SqlSugarOrm的依赖注入:
interface:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EntryRegistration.Models { public interface IDBService<T> : IDisposable { T GetDBInstance(); } }
//实现类
using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace EntryRegistration.Models { public class SqlServerService : IDBService<SqlSugarClient> { public SqlSugarClient _db; public SqlServerService() { string ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); _db = new SqlSugarClient(ConnectionString);//获SqlSugarClient对象 } public SqlSugarClient GetDBInstance() { return _db; } public void Dispose() { if (_db != null) { _db.Dispose(); } } } }
在控制器中的注入:
private SqlSugarClient _db; public ViewController(IDBService<SqlSugarClient> db) { _db = db.GetDBInstance(); }
CRUD:
//interface
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Mvc; namespace EntryRegistration.Models.CRUD { public interface ICRUDService<T> { /// <summary> /// 添加 /// </summary> /// <returns></returns> ActionResult Add(T obj); /// <summary> /// 删除 /// </summary> /// <param name="obj"></param> /// <returns></returns> ActionResult Del(Guid VGUID); /// <summary> /// 编辑 /// </summary> /// <param name="obj">当前类型实例</param> /// <returns></returns> ActionResult Edit(T obj); /// <summary> /// 通过主表ID查列表 /// </summary> /// <param name="EntryRegistrationID"></param> /// <returns></returns> ActionResult Select(Guid EntryRegistrationID); } }
//实现类
using Best.Entities.Tables; using EntryRegistration.Models.CRUD; using EntryRegistration.Models.Entity; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace EntryRegistration.Models.CRUD { public class EntRegCRUDService<T> : ICRUDService<T> where T : class, new() { private SqlSugarClient _db; public EntRegCRUDService(IDBService<SqlSugarClient> db) { _db = db.GetDBInstance(); } /// <summary> /// 添加方法实现 /// </summary> /// <param name="obj"></param> /// <returns>Json结果</returns> public ActionResult Add(T obj) { ActionResultModel<string> result = new ActionResultModel<string>(); try { if (typeof(T) != typeof(X6_EntryRegistration)) { obj.GetType().GetProperty("VGUID").SetValue(obj, Guid.NewGuid()); } #region 数据验证 //必填验证 CheckResult checkResult = Models.Check.CheckRequire<T>(obj); if (checkResult.isSuccess != true) { return JsonHandle.GetResult(false, checkResult.msg); } #endregion //数据插入 var IsSuccess = _db.Insert(obj); if (IsSuccess.ToString() == "true") { return JsonHandle.GetResult(true, "数据插入成功"); } else { return JsonHandle.GetResult(false, "数据插入失败"); } } catch (Exception ex) { result.isSuccess = false; result.responseInfo = ex.Message; } return JsonHandle.GetResult(result.isSuccess, result.responseInfo); } /// <summary> /// 删除方法实现 /// </summary> /// <param name="VGUID"></param> /// <returns>Json结果</returns> public ActionResult Del(Guid VGUID) { ActionResultModel<string> result = new ActionResultModel<string>(); try { bool isSuccess = _db.Delete<T, Guid>(VGUID); if (isSuccess == true) { return JsonHandle.GetResult(true, "删除成功"); } else { return JsonHandle.GetResult(false, "删除失败"); } } catch (Exception ex) { result.isSuccess = false; result.responseInfo = ex.Message; } return JsonHandle.GetResult(result.isSuccess, result.responseInfo); } /// <summary> /// 编辑方法实现 /// </summary> /// <param name="obj"></param> /// <returns>Json结果</returns> public ActionResult Edit(T obj) { ActionResultModel<string> result = new ActionResultModel<string>(); try { var VGUID = obj.GetType().GetProperty("VGUID").GetValue(obj, null); bool isSuccess = _db.Update<T, Guid>(obj, Guid.Parse(VGUID.ToString())); if (isSuccess == true) { return JsonHandle.GetResult(true, "更新成功"); } else { return JsonHandle.GetResult(false, "更新失败"); } } catch (Exception ex) { result.isSuccess = false; result.responseInfo = ex.Message; } return JsonHandle.GetResult(result.isSuccess, result.responseInfo); } /// <summary> /// 查询方法实现 /// </summary> /// <param name="EntryRegistrationID"></param> /// <returns>Json结果</returns> public ActionResult Select(Guid EntryRegistrationID) { var list = _db.SqlQuery<T>("select * from " + typeof(T).Name + " where EntryRegistrationID=@EntryRegistrationID", new { EntryRegistrationID = EntryRegistrationID }) .ToList(); return JsonHandle.GetResult(list); } } }