gpt4 book ai didi

c# - 存储库模式 : How to implement a basic Repository including a predicate in C#?

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:33 25 4
gpt4 key购买 nike

我是存储库的新手。我刚刚阅读了关于实现谓词和工作单元 (Fowler) 的内容。我见过像下面这样的存储库接口(interface):

public interface IRepository<ET> {
ET Add( ET entity);
ET Remove( int id);
ET Get( int id);
IList<ET> Get(Expression<Func<T, bool>> predicate);
}

当然,工作单元会向新存储库注入(inject)一个数据上下文(Microsoft 粉丝),其中工作单元会有一个 .Save() 方法,在所有数据上下文上调用 Save。

没有 Edit 方法,所以我假设您可以修改从存储库中弹出的任何实体,然后在工作单元上调用保存更改。

这是正确的吗?漏水?我错过了什么? OrderBy 的方法不需要在存储库中吗? Paging (.Skip().Take()) 是否应该以某种方式在谓词中实现?

示例代码的链接会很棒,尤其是如何在存储库中实现谓词。

最佳答案

如果您指的是 Entity Framework 我建议您阅读以下内容:Link

更新:

我不是存储库模式方面的专家,但我现在在我的项目中使用它。部分形式表现,以下是我从这种设计模式中发现的好处:

1、简化所有实体的CRUD操作实现。使用一个界面:

public interface IDataRepository<T> where T : class

然后你就可以非常容易和快速地复制别人

public class EntityOneRepository : IDataRepository<EntityOne>
public class EntityTwoRepository : IDataRepository<EntityTwo>

2,让我的代码保持干燥。一些实体可能有自己的数据操作方法。 (即存储过程)您可以轻松扩展它而无需触及其他存储库。

public interface IDonationRepository : IDataRepository<Donation>
{
//method one
//method two
//....
}

对于分页,可以通过 Skip() 和 take() 完成,也可以在数据库中定义自己的 SP,然后通过 EF4 调用它。在这种情况下,您也将从数据库 sp 缓存中受益。

有时,保持代码整洁和逻辑可读对于更好的应用程序结构也很重要。

关于c# - 存储库模式 : How to implement a basic Repository including a predicate in C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993672/

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