gpt4 book ai didi

c# - 在 DbSet 中创建预过滤层

转载 作者:行者123 更新时间:2023-11-30 18:25:53 24 4
gpt4 key购买 nike

我想使用一个名为 Deleted 的字段来保护我的实体,以防止客户端真正删除任何实体。如果他尝试删除,唯一的事情就是 entity.Deleted = true;

问题是我不想在任何地方包括我需要使用的已删除实体

db.Entities.Where(e => e.Deleted == false).WhateverMethod();

我知道我可以在我的 Controller 中使用这样的方法

private IQueryable<Entity> GetNotDeletedEntity() {
return db.Entities.Where(e => e.Deleted == false);
}

并为 GetNotDeletedEntity().WhateverMethod() 更改每个 db.Entities.WhateverMethod(),但我觉得很奇怪。

需要注意的是,GetNotDeletedEntity() 返回 IQueryable,而 db.Entities 返回 DbSet。这种不一致可能会成为 future 的问题。

我认为有一种方法可以扩展 DbSet 以像这样工作

db.Entities//包括所有实体

db.NotDeletedEntities//只包含实体 e.Deleted == false

关于如何 DRY .Where(e => e.Deleted == false) 的任何建议都会很棒。

最佳答案

看起来这个人试图完成非常相似的事情。在这里查看 Jon Skeet 的解释:extension for DbSet

关于c# - 在 DbSet 中创建预过滤层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29421126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com