gpt4 book ai didi

c# - .Net 在使用存储库的工作单元模式中进行依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-30 21:58:35 26 4
gpt4 key购买 nike

我对依赖注入(inject)的概念比较陌生,并且一直在尝试在开始新项目之前收集最佳实践。

查看 Dependency injection in unit of work pattern using repositories 的最佳答案我了解该方法,但示例代码似乎缺少某些内容,我很困惑...

接口(interface)IRepository的定义如下:

public interface IRepository 
{
void Submit();
}

但是当接口(interface)被用作 GenericRepository 类定义的一部分时,Submit 方法没有实现:

public abstract class GenericRepository<T> : IRepository<T> where T : class
{
public GenericRepository(IUnitOfWork unitOfWork)
{
unitOfWork.Register(this);
}
}

然后,定义一个特定实体的存储库类,继承自GenericRepository:

public class DepartmentRepository : GenericRepository<Department> 
{
public DepartmentRepository(IUnitOfWork unitOfWork): base(unitOfWork) { }
}

我的问题是,鉴于每个不同实体的存储库可能需要对不同 DataContext 的引用,应该如何使用 DI 实现通用 Submit() 方法?

最佳答案

您链接到的问题是确保工作单元始终了解存储库的解决方案;存储库实现本身非常无用!存储库应该至少公开所有 crud 操作的方法:

public interface IRepository<TEntity, in TKey> where TEntity : class
{
TEntity Read(TKey id);
TEntity Add(TEntity entity);
TEntity Update(TEntity entity);
void Delete(TKey id);
}

参见 this例如文章。

关于c# - .Net 在使用存储库的工作单元模式中进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29969681/

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