ASP.NET MVC 3 & Unity.MVC3(2)

来源:未知 责任编辑:责任编辑 发表时间:2013-11-15 19:50 点击:

        } 
    } 

其实上面的都是引子,用 Unity 目的是进一步推迟 Repository 或者 UnitOfWork (很多时候演变成 Service 了) 的实例化时机,交给了 IoC 容器注入。以达到更灵活切换的目的,比如从 MS Entities 变换到 MySql Entities 或者是从 ObjectContext  变换到  DbContext (CodeFirst)。

下面介绍一下 Unity.MVC3 的实践过程:
1.  EF CodeFirst Models
用 EF CodeFirst 创建一个 Models 工程,用来管理 Entities
\

表很简单,只有一个 DbSet<User>
[csharp]
namespace MvcWithUnityTest.Models 

    public class DbEntities : DbContext 
    { 
        public DbSet<User> Users { get; set; } 
    } 

2. GenericRepository
主要针对 EF(ObjectContext) 和 EF CodeFirst(DbContext) 抽出接口 IRepository
\

[csharp]
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Linq.Expressions; 
 
namespace GenericRepository 

    public interface IRepository<T> : IDisposable where T : class 
    { 
        IQueryable<T> AsQueryable(); 
 
        IEnumerable<T> GetAll(); 
        IEnumerable<T> Find(Expression<Func<T, bool>> where); 
        T Single(Expression<Func<T, bool>> where); 
        T First(Expression<Func<T, bool>> where); 
 
        void Delete(T entity); 
        void Add(T entity); 
        void Update(T entity); 
    } 

DbContextRepository<T> 对应于 DbContext 的 IRepository<T> 实现,通过构造方法注入 Context  实例
[csharp]
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Entity; 
using System.Linq.Expressions; 
 
namespace GenericRepository 

    public class DbContextRepository<T> : IRepository<T> where T : class 
    { 
        protected DbSet<T> _objectSet; 
        protected DbContext _context; 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • C#高级编程:数据库连接[1]
  • asp.net 设置GridView的选中行的实现代码
  • 经典C++程序1
  • IIS 自动回收导致后台定时器失效的问题解决
  • ASP.NET&#160;GridView列表代码示例
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1