编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> 领域驱动设计 -> [Architect] Abp 框架原理解析(3) DynamicFilters -> 正文阅读

[领域驱动设计][Architect] Abp 框架原理解析(3) DynamicFilters

本节目录
介绍 定义Filter 设置Filter
这是Abp中多租户、软删除、激活\禁用等如此方便的原因
Install-Package EntityFramework.DynamicFilters
定义数据

    class DemoDb : DbContext
    {
        public DemoDb() : base("Default")
        {
        }

        public IDbSet<Blog> Blogs { get; set; }
    }

    interface ISoftDelete
    {
        bool IsDeleted { get; set; }
    }

    class Blog : ISoftDelete
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public bool IsDeleted { get; set; }
    }

初始化数据

        static void Main(string[] args)
        {
            using (var db = new DemoDb())
            {
                for (int i = 0; i < 5; i++)
                {
                    db.Blogs.Add(new Blog { Name = i.ToString() });
                }

                for (int i = 0; i < 5; i++)
                {
                    db.Blogs.Add(new Blog { Name = i.ToString(), IsDeleted = true });
                }
                db.SaveChanges();
            }
            Console.WriteLine("Done");

            Console.ReadLine();
        }

查询数据

        private static void Query()
        {
            using (var db = new DemoDb())
            {
                Console.WriteLine(db.Blogs.Count());
            }
        }

定义Filter

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //以下几种效果均一样
            modelBuilder.Filter("IsDeleted", (ISoftDelete entity) => entity.IsDeleted, false);

            //modelBuilder.Filter("IsDeleted", (ISoftDelete entity) => entity.IsDeleted == false);

            //modelBuilder.Filter("IsDeleted", (Blog entity) => entity.IsDeleted, () =>
            //{
            //    //todo other
            //    return false;
            //});

            //多参数情况
            modelBuilder.Filter("BlogFilter",
                    (Blog b, int id, bool isDeleted) => (b.Id == id) && (b.IsDeleted == isDeleted),
                    () => 1,
                    () => false);
        }

设置Filter 修改参数值

        private static void Query()
        {
            using (var db = new DemoDb())
            {
                db.SetFilterScopedParameterValue("IsDeleted", true);
                db.SetFilterScopedParameterValue("BlogFilter", "id", 2);
                Console.WriteLine(db.Blogs.Count());
            }
        }

启用/禁用过滤
禁用代码:
context.DisableFilter("IsDeleted"); context.DisableAllFilter(); modelBuilder.DisableFilterGlobally("IsDeleted");
启用代码:
context.EnableFilter(); context.EnableAllFilter();  
参考:
https://github.com/jcachat/EntityFramework.DynamicFilters
本文地址:http://www.cnblogs.com/neverc/p/5258184.html
  领域驱动设计 最新文章
领域驱动设计的基础知识总结
海西 · 云交付 DevOps实践落地方案
多服务器终端交互利器
《静儿的服务治理私房菜》服务治理和架构
服务治理概述
美团.点评服务治理框架
ASP.NET Zero
1.领域驱动简介.2.领域.子域.限界上下文.3.
东麓庄园系统开发
东麓庄园系统开发
上一篇文章      下一篇文章      查看所有文章
加:2016-03-11 20:20:07  更:2017-05-16 03:46:25 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 日历 万年历 2019年11日历
2019-11-19 4:08:43
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识