c# - Entity Framework 4.1 通用存储库

标签 c# asp.net entity-framework entity-framework-4.1 repository-pattern

使用 Entity Framework 4.1 并尝试在上面创建一个存储库层作为测试。基本上我正在玩弄它以熟悉它,因为我是 Entity Framework 和存储库模式的新手。我遵循了一些教程并创建了一个通用存储库。存储库是这样启动的:

CentralDataRepositoryEntities CentralDataRepositoryEntities = new CentralDataRepositoryEntities();

Repository<Group> Rep = new Repository<Group>(CentralDataRepositoryEntities);
IEnumerable<Group> Groups = Rep.Get<Group>(g => g.JorMGroupId == 114);

Console.WriteLine(Group.Single());

Repository<Job> Rep1 = new Repository<Job>(CentralDataRepositoryEntities);
IEnumerable<Job> Jobs = Rep1.Get<Job>(j => j.jobId == 2138);

Console.WriteLine(Job.Single());

如果我不必每次都启动一个新的存储库,我会更喜欢它。有没有一种方法可以创建存储库,然后改用通用方法?例如:

Repository Rep = new Repository(CentralDataRepositoryEntities);
IEnumerable<Group> Groups = Rep.Get<Group>(g => g.JorMGroupId == 114);
IEnumerable<Job> Jobs = Rep.Get<Job>(j => j.jobId == 2138);

这是个好主意吗?为什么要为每种类型创建一个单独的存储库,创建多个存储库对性能有何影响?

最佳答案

拥有这样的存储库将违反 Single responsibility principle .单一存储库应该只负责管理单一类型的实体。

这种通用的存储库模式只适用于简单的场景。在某些情况下,您需要在存储库中为特定实体添加其他方法。

关于c# - Entity Framework 4.1 通用存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7646560/

相关文章:

c# - 从不同服务器 B 检索来自远程服务器 A 的文件列表

c# - 域对象、POCO 和实体之间有什么区别?

asp.net - 在单独的 Docker 容器中使用数据库时添加迁移会引发错误

c# - 如何使用线程池和 Entity Framework 处理数据库操作?

database - 更新插入

c# - StringTemplate:内容[匿名]属性字符串未定义

c# - 在 javascript 片段中使用 C# 列表

c# - 'HttpClientHandler' 不包含 'ClientCertificates' 在 net461 和 net47 中的定义?

c# - 有选择地使用默认的 JSON 转换器

c# - 两个类之间的 Entity Framework 多对多