gpt4 book ai didi

c# - 没有接口(interface)和抽象的存储库 = 畸变?

转载 作者:太空狗 更新时间:2023-10-30 01:09:25 25 4
gpt4 key购买 nike

我需要关于设计这样一个存储库的反馈,它会帮助我晚上休息,真的......
我无意为 Web 表单编写测试,涉及的开销太大。
我无意在明天、下个月或明年更改 ORM 或数据库,并且我需要一个地方来集中查询逻辑并避免代码重复。对吧?...

public class StuffRepository // no contract, I simply instanciate StuffRepository
{
// Scope is Per-Request, DI, no abstraction...
protected StuffDb DbContext = ObjectFactory.GetInstance<StuffDb>();

// Returns a Stuff, an Entity (EF), no abstraction
public Stuff Get(Guid id)
{
return DbContext.Stuff.FirstOrDefault(s => s.Id == id);
}
}

我使用过完全抽象的存储库、基于 Web 表单的 MVP 架构以实现单个页面的可测试性和抽象实体(DTO 和域/模型对象)。它只是永无止境,永远不够,永远不完美。

我是否违反了所有规则、原则并产生了一种称为存储库的畸变?

如果我只是将它重命名为 StuffDAL,它会突然变得有意义吗?

谢谢

最佳答案

老实说,我对 Repositories 也有同样的感觉,最后在上个月阅读了大量相关内容之后,我真的觉得我一直在错误地做 repositories。我认为存储库实际上只是一个 DAO 或 DAL,一种抽象,可以更容易地说“坚持,把我的对象还给我”,或者“坚持,持有这个对象,直到我以后想要它”。

你知道吗,我真的不在乎它叫什么,如果它正确地抽象出我需要的东西,易于测试,完成工作,易于更改。

那么,它是不是像 Eric Evans 设想的那样在内存中存储对象的存储库?不,不是真的,但是嘿,我不会告发你的。

关于c# - 没有接口(interface)和抽象的存储库 = 畸变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832572/

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