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

        }




    }
}

 

posted @ 2017-08-07 14:00  小小高  阅读(287)  评论(0编辑  收藏  举报