自己改写的asp.net MVC EF Respoistory 仓储模式

首先是model 的实体(art_CategoryInfo.cs)

namespace BBS.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class art_CategoryInfo
    {
        public int Category_ID { get; set; }
        public string Category_title { get; set; }
        public string Category_description { get; set; }
        public string category_img { get; set; }
        public int Enabeld { get; set; }
    }
}

然后是连接实体的DbContext  (DB.cs)

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using BBS.Models;

public partial class connetionEntities : DbContext
{
    public connetionEntities()
        : base("name=Entities")
    {
    }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

public DbSet<art_CategoryInfo> art_CategoryInfo { get; set; }
 
}

然后是IRespoistory 的接口层(IRespoistory .cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
namespace BBS.Models
{
    public interface IRepository<TEntity>
    {

TEntity GetById(int id);

IEnumerable <TEntity> SearchFor(Expression<Func<TEntity, bool>> predicate);

IEnumerable <TEntity> GetAll();

void Edit(TEntity entity);

void Insert(TEntity entity);

void Delete(TEntity entity);
    }

}

然后是Respoistory层(Respoistory.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BBS.Models;
using System.Linq.Expressions;
using System.Data.Entity;
using System.Data;
namespace BBS.Models
{
    public class Respoistory<TEntity> : IRepository<TEntity> where TEntity:class
    {

protected DbSet<TEntity> DbSet;
        private readonly DbContext _dbContext;
        public Respoistory(DbContext dbcontext)
        {
            _dbContext = dbcontext;
            DbSet = _dbContext.Set<TEntity>();

}

public Respoistory()
        {

}

public TEntity GetById(int id)
        {
            return DbSet.Find(id);
        }

public IEnumerable<TEntity> SearchFor(Expression<Func<TEntity, bool>> predicate)
        {
            return DbSet.Where(predicate);
        }

public IEnumerable<TEntity> GetAll()
        {
            return DbSet;
        }

public void Edit(TEntity entity)
        {
            _dbContext.Entry(entity).State = EntityState.Modified;
            _dbContext.SaveChanges();
        }

public void Insert(TEntity entity)
        {
         
            DbSet.Add(entity);
            _dbContext.SaveChanges();
        }

public void Delete(TEntity entity)
        {
            DbSet.Remove(entity);
            _dbContext.SaveChanges();
        }

}
}

最后是Controller 层如何调用了

这里我写了简单的实列

HomeConcoller.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BBS.Models;
namespace BBS.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        Respoistory<art_CategoryInfo> Res_ArtCate = new Respoistory<art_CategoryInfo>(new connetionEntities());
        public ActionResult Index()
        {

return View(Res_ArtCate.GetAll());

}

public ActionResult Create()
        {

return View();
        }

[HttpPost]
        public ActionResult Create(art_CategoryInfo art) 
        {
            if (ModelState.IsValid) 
            {
                Res_ArtCate.Insert(art);
                return RedirectToAction("Index");
            }
            return View(art);

}

public ActionResult Edit(int id) 
        {
            art_CategoryInfo arts = Res_ArtCate.GetById(id);
            if (arts == null) 
            {
                return HttpNotFound();
            }
            return View(arts);

}

[HttpPost]
        public ActionResult Edit(art_CategoryInfo art)
        {
            if (ModelState.IsValid) 
            {
                Res_ArtCate.Edit(art);
                return RedirectToAction("Index");
            }

return View(art);
        }

public ActionResult Delete(int id)
        {
            art_CategoryInfo art = Res_ArtCate.GetById(id);
            if (art == null)
            {
                return HttpNotFound();
            }
            return View(art);

}

[HttpPost,ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id) 
        {
            art_CategoryInfo art = Res_ArtCate.GetById(id);
            Res_ArtCate.Delete(art);
            return RedirectToAction("Index");

}

}
}

以上就是一个简单的EF   Respoistry(仓库)了

咖啡之念:http://www.aicoffees.com/itshare/412081531.html

时间: 2024-08-10 08:44:39

自己改写的asp.net MVC EF Respoistory 仓储模式的相关文章

ASP.NET MVC+EF框架+EasyUI实现权限管理系列

http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个 项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个 系列

ASP.NET MVC+EF框架+EasyUI实现权限管理

4.为什么使用MVC而不是用WebForm呢? (1)为什么使用MVC而不是用WebForm呢?这个是我临时想的,因为我就是想说明一下WebForm和MVC的优缺点,来可以使大家能够更好地理解 MVC和WebForm,而不像某些人说MVC会替代WebForm,我个人认为这个可能性很小,因为各有各的好处,看在哪里使用吧,下面我就简单介绍下 WebForm和MVC的优缺点. (2)WebForm介绍 1)优点 1):支持事件模型,取决于微软提供了丰富的服务器端组建,WebForm可以快速的搭建Web

自己开发博客(ASP.NET MVC+EF CodeFrist)-历程小功能

自己开发博客(ASP.NET MVC+EF CodeFrist)-时间轴小功能 想写个类似时间轴的效果 就找了一个插件 前端不济 找了一个简单的插件地址http://sc.chinaz.com/jiaoben/130509308250.htm 这是实体类 public class TimnAxis : BaseEntity<int> { [Required(ErrorMessage = "{0}是必须的")] [Display(Name = "时间")]

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(5)-前台JqueryEasyUI前台实现

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(5)-前台JqueryEasyUI前台实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装 前言:今天经理买了一个诺基亚的Windows Phone 8系统,特感兴趣,所以在哪里看了很长时间,这篇文章就写的有点迟, 从这个Demo开始到现在我已经写了4篇博客了,终于可以看到页面的东

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程 前言:前面几篇博客我们基本已经介绍完了搭建整个项目和数据库访问层以及一些业务逻辑层的实现,当然了,我们的数据库访问层这样还是可以在进行封装的,但是我到这里就行了吧,项目也不大,不需要那么麻烦的,那么我们今天开始介绍我们需要介绍的内容,那就是我

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这篇博客我们继续来实现我的权限系列,这个博客一段时间也没有写了,重点是我在想还写不写,最终我决定还是写下去,因为我们是为了学习,当别人提出意见的时候,我们可以参考和采纳,但是我们不一定非要采纳,上几篇博客大家都说用CodeFirst来实现,是啊,现在基本很少有人用我的这种方法来实现了,都是用CodeF

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) 前言:这篇博客开始我们便一步一步的来实现这个权限系统的初步设计-框架搭建,首先我要说的是我们需要开发工具Visual Studio 2012或者10也行,其次是我们要有SQL Server数据库,如果是Visual Studio 2010的话,你还要安装MVC4的开发文件,这个是吗?我不记得了,谁可以回答我一下的,我一直用2012,都是集成

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装  (5):前台Jquery easyUI实现 前言:通过前面的五篇博客我们已经对权限系统的后台架构进行了详细的说明,那么我再前面的博客中也说到了我们的后台架构还会再改的,我准备这段时间我们继续完善我们的后台

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装  (5):前台Jquery easyUI实现   (6):EF上下文实例管理 前言:上篇博客中我们重新对EF框架实现上下文进行了重新的操作,而且我们也建立了DbSession,使用CallContext