向所有请求 EF6 添加 Where 条件 [英] Adding Where Condition to All Requests EF6

查看:24
本文介绍了向所有请求 EF6 添加 Where 条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的大多数实体(不是全部) 都有两个属性,分别称为 CompanyIdDeleted.如何为所有选择请求自动插入这两个属性,而不是在整个应用程序中的每个查询上手动设置.

Most of my entities (not all) have two properties called CompanyId and Deleted. How would be possible to auto insert these two properties for all select requests instead of setting manually on every single query I have along the whole app.

例子:

db.MyEntity.Where(me => me.Id == 1).Select(me => me.Description)

  • 动态检查实体是否有道具 CompanyIdDeleted.
  • 大小写肯定,改成这样
  • db.MyEntity.Where(me => me.Id == 1 && Deleted == false && CompanyId == 1).Select(me => me.Description)

    • 大小写是否定的,保持相同的选择查询.

    这将有助于我为所有具有可用属性的查询设置这些条件.

    It would help me having to set these conditions to all my queries in which has the properties available.

    推荐答案

    可以借助nuget包添加过滤器:EntityFramework.Filters.另外,创建通用接口而不是动态检查属性是否存在是个好主意:

    You can add filter with the help of nuget package: EntityFramework.Filters. Also, good idea is to create common interface instead of dynamically checking for properties existence:

    public interface IMyEntityInterface
    {
        public int Id {get;set;}
        public bool Deleted {get;set;}
    }
    
    public class MyEntity : IMyEntityInterface
    {
        public int Id {get;set;}
        public bool Deleted {get;set;}
        //other stuff
    }
    
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    {   
        modelBuilder.Conventions
           .Add(FilterConvention.Create<IMyEntityInterface, int, bool>("MyFilter", (entity, Id, Deleted) => entity.Id == Id && entity.Deleted == Deleted);
    }
    

    用法:

    var filter = db.EnableFilter("MyFilter");
    filter.SetParameter("Id", 1);
    filter.SetParameter("Deleted", false);
    
    var data = db.MyEntity.Where(me => me.CompanyId == 1).Select(me => me.Description);
    //select Description from MyEntities where Id = 1 and Deleted = false and CompanyId = 1
    

    这篇关于向所有请求 EF6 添加 Where 条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆