码迷,mamicode.com
首页 > Web开发 > 详细

Neject 在MVC框架中使用

时间:2017-11-10 15:56:50      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:param   sele   lin   sum   根据   text   repo   efault   uid   

 Neject 开始是用3.3.0.0,不能自动生成NinjectWebCommon文件,测试了很久发现,是版本的问题 ,后来用Nuget卸载后,重新下了Ninject,Ninject.Web.Common,Ninject.Web.Mvc这三个程序集,都是选择3.2.0.0版本的,然后进行测试,加一个类库,里面放接口,实现类,以及实体类技术分享

 1.创建接口

技术分享
using ADT.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ADT.Abstract
{
    public interface IProduct
    {
        /// <summary>
        /// 根据主键id获取一个实体
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ProductBean GetModelById(int id);
        /// <summary>
        /// 获取所有数据,返回List集合
        /// </summary>
        /// <returns></returns>
        List<ProductBean> GetAllList();

        bool AddOrEdit(ProductBean model);

        /// <summary>
        /// 根据主键id改变ValID值
        /// </summary>
        bool UpdateValIDById(long id, bool valid);
    }
}
View Code

2.创建实现类

技术分享
using ADT.Abstract;
using ADT.Entities;
using CYQ.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ADT.Concrete
{
    public class Product : IProduct
    {
        /// <summary>
        /// 对商品的添加和编辑
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool AddOrEdit(ProductBean model)
        {
            bool result = false;
            using (MAction act = new MAction("Product"))
            {
                act.Set("ProductName", model.ProductName);
                act.Set("ProdutPrice", model.ProdutPrice);
                act.Set("ValidTime", model.ValidTime);
                act.Set("Valid", model.Valid);
                act.Set("Coin", model.Coin);
                if (model.Id > 0)
                {
                    result = act.Update("Id=" + model.Id);
                }
                else
                {
                    result = act.Insert();
                }

            }
            return result;
        }

        /// <summary>
        /// 获取全部产品信息
        /// </summary>
        /// <returns></returns>
        public List<ProductBean> GetAllList()
        {
            List<ProductBean> list = new List<ProductBean>();
            using (MAction act = new MAction("Product"))
            {
                list = act.Select().ToList<ProductBean>();
            }
            return list;
        }
        /// <summary>
        /// 根据主键id获取一个实体信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ProductBean GetModelById(int id)
        {
            ProductBean model = null;
            using (MAction act = new MAction("Product"))
            {
                if (act.Fill(id))
                {
                    model = act.Data.ToEntity<ProductBean>();

                }
            }
            return model;
        }

        /// <summary>
        /// 根据主键id改变ValID值
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool UpdateValIDById(long id, bool valid)
        {
            bool result = false;
            using (MProc proc = new MProc("update Product set Valid=@valid where ID=@id"))
            {
                proc.Set("valid", valid);
                proc.Set("id", id);
                int num = proc.ExeNonQuery();
                if (num > 0)
                {
                    result = true;
                }
            }
            return result;
        }
    }
}
View Code

3.创建实体

技术分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ADT.Entities
{
    public class ProductBean
    {
        /// <summary>
        /// 主键
        /// </summary>
        public Int64 Id { get; set; }
        /// <summary>
        /// 产品名称
        /// </summary>
        public string ProductName { get; set; }
        /// <summary>
        /// 产品价格
        /// </summary>
        public Decimal ProdutPrice { get; set; }
        /// <summary>
        /// 无期限的为0, 3个月为3,6个月为6, 12个月为12
        /// </summary>
        public int ValidTime { get; set; }
        /// <summary>
        /// 是否有效
        /// </summary>
        public bool Valid { get; set; }
        /// <summary>
        /// 产品虚拟币
        /// </summary>
        public Int64 Coin { get; set; }
    }
}
View Code

4.在web.config配置下连接字符串

   <add name="conn" connectionString="server=.;database=xx;uid=sa;pwd=xxxx;Max Pool Size=512;Min Pool Size=5;Connect Timeout=600;" />

5.我用的是ORM框架是CYQ,Data,这边需要引用一个CYQ.Data的程序集,用作和数据库交互的

技术分享

 

新增一个NinjectDependencyResolver.cs的文件,实现IDependencyResolver,贴上代码如下:

技术分享
using ADT.Abstract;
using ADT.Concrete;
using Ninject;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication4
{
    public class NinjectDependencyResolver : IDependencyResolver
    {

        private IKernel kernel;
        public NinjectDependencyResolver(IKernel kernelParam)
        {
            kernel = kernelParam;
            AddBindings();
        }

        public object GetService(Type serviceType)
        {
            return kernel.TryGet(serviceType);
        }

        public IEnumerable<object> GetServices(Type serviceType)
        {
            return kernel.GetAll(serviceType);
        }

        private void AddBindings()
        {
            kernel.Bind<IProduct>().To<Product>();
        }
      
    }  
}
View Code

接下来新键一个控制器,测试下依赖注入有没有成功

技术分享
using ADT.Abstract;
using ADT.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class DefaultController : Controller
    {
        private IProduct productRepository;
        public DefaultController(IProduct productRepository)
        {
            this.productRepository = productRepository;
        }
        // GET: Default
        public ActionResult Index()
        {
            List<ProductBean> list = productRepository.GetAllList();
             ViewBag.count = list;
            return View();
        }
    }
}
View Code

 这样下来,Neject在MVC5中的使用已经介绍完毕了。

Neject 在MVC框架中使用

标签:param   sele   lin   sum   根据   text   repo   efault   uid   

原文地址:http://www.cnblogs.com/ZXH-CZBK/p/7814980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!