在EF的code frist下写稳健的权限管理系统:仓储设计(三)

public class BaseRepository<T>:IBaseRepository<T> where T : class
    {
        protected EfConnection DbContext = ContextFactory.GetCurrentContext();

        public bool Insert(T entity)
        {
            DbContext.Set<T>().Add(entity);
            return DbContext.SaveChanges()>0;
        }

        public bool InsertBatch(List<T> datas)
        {
            DbContext.Set<T>().AddRange(datas);
            return DbContext.SaveChanges() > 0;
        }

        public void Update(T entity)
        {
            DbContext.Set<T>().Attach(entity);
            DbContext.Entry<T>(entity).State = EntityState.Modified;
            DbContext.SaveChanges();
        }

        public void Delete(Expression<Func<T, bool>> expression)
        {
            var reDeleteds = DbContext.Set<T>().Where(expression);
            if (!reDeleteds.Any()) return;

            foreach (var reDeleted in reDeleteds)
            {
                DbContext.Entry<T>(reDeleted).State = EntityState.Deleted;
            }

            DbContext.SaveChanges();
        }

        public IQueryable<T> GetAll()
        {
            return DbContext.Set<T>().AsQueryable();
        }

        public T Find(Expression<Func<T, bool>> expression)
        {
            return DbContext.Set<T>().FirstOrDefault(expression);
        }
    }

BaseRepository

public interface IBaseRepository<T> where T : class
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="entity">数据实体</param>
        /// <returns>添加后的数据实体</returns>
        bool Insert(T entity);

        /// <summary>
        /// 批量添加
        /// </summary>
        /// <param name="datas"></param>
        /// <returns></returns>
        bool InsertBatch(List<T> datas);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity">数据实体</param>
        /// <returns>是否成功</returns>
        void Update(T entity);

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="expression">删除条件</param>
        /// <returns>是否成功</returns>
        void Delete(Expression<Func<T, bool>> expression);

        /// <summary>
        /// 获取所有
        /// </summary>
        /// <returns></returns>
        IQueryable<T> GetAll();

        /// <summary>
        /// 查找数据
        /// </summary>
        /// <param name="expression">查询条件</param>
        /// <returns>实体</returns>
        T Find(Expression<Func<T, bool>> expression);
    }

IBaseRepository

基础仓储的接口和EF中的实现

时间: 2024-11-10 08:16:13

在EF的code frist下写稳健的权限管理系统:仓储设计(三)的相关文章

在EF的code frist下写稳健的权限管理系统:数据库模型(二)

先从数据库开始,因为是用EF的code frist,所以所有的设计都在解决项目中进行. 先是数据模型开始 我已经建立了四个模型,user,role,action,actiongroup user里面有role,role中的ActionIds存储action的id组合字符串,actiongroup作为action的分组. 所以只要知道user的role,就可以里面找出他对应的action操作,做到功能上的权限管理. 再配合MVC的过滤或者继承,对有需要的action进行标示授权,功能颗粒化就达到了

在EF的code frist下写稳健的权限管理系统:MVC过滤拦截,权限核心(五)

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)] public class PowerAttribute : FilterAttribute, IActionFilter { public void OnActionExecuted(ActionExecutedContext filterContext) { //throw new

在EF的code frist下写稳健的权限管理系统:开篇(一)

环境:EF6.0.0.0+Autofac3.5.0.0+MVC4.0+pure6.0+Jquery IDE:vs2012,数据库:vs2008r2 搭建环境如下: 我给它取名字为cactus:仙人球,我喜欢的一种植物. UML图如下(https://www.processon.com 提供) 360云分享项目代码:http://yunpan.cn/cQX5kKxdV3xfw  访问密码 0dca 淘宝SVN:http://code.taobao.org/p/Cactus/src/ 大概那些场外的

在EF的code frist下写稳健的权限管理系统:界面设计(四)

基本都是采用pure设计(中文官网:http://purecss.org,英文官网:http://purecss.io).pure只是一个简单强大的cssUI库,支持响应式设计,适合自己设计或者给美工设计,定制强大.当然,脚本还是得自己写. pure参考文章:http://www.cnblogs.com/RainbowInTheSky/p/4475360.html,http://www.cnblogs.com/RainbowInTheSky/p/4481552.html,http://www.c

从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章的评论,在里面能看出有很多种声音,有支持的我的朋友给我加油打气,有分享自己工作经历的朋友,有提出忠肯意见的朋友,有对记事本写代码吐槽的朋友,也有希望让我换个行业的,觉得我可能不适合这个行业朋友,不管怎样,我都接受,都是大家同行的一些忠告,谢谢大家. 首先我要在这里感谢很多博客园里面的大牛,写了很多系

使用 EF Power Tool Code Frist 生成 Mysql 实体

原文:使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键   2,   3,   4,   5,  生成后的效果     已知问题: 1,在Mysql数据表中 tinyint(1) ,会被映射成为 C# bool ,这样造成一些数据信息的丢失. 这个问题应该是EF 工具的问题,暂时没有找到解决方案.      手工去修改生成的实体是不经济的,下次再更新时候,又会变成 bool型 .      所以解决的办法就是修改数据库字段型 ,一般情况下,

使用Code::blocks在windows下写网络程序

使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据General Public License,v3 发布 GPLv3 许可证的副本可以在这里获得:http://www.gnu.org/licenses/gpl.html 本文档根据GNU Free Documentation License 1.3发布 GFDL1.3许可证的副本可以在这里获得:ht

EF code frist 使用Linq或者Sql执行

1.使用Linq查询 using (var db = new BloggingContext()) { #region 使用linq查询 Console.Write("Enter a name for a new Blog: "); var name = Console.ReadLine(); var blog = new Blog { Name = name }; db.Blogs.Add(blog); db.SaveChanges(); var query = from b in 

EntityFramework数据库配置(code frist)

什么也不说先贴代码 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section