此模型已简化,仅用于演示。
在我的申请中得到:
public class Product
{
public Guid Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
public class Category
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public interface IRepository<T>
where T : class
{
T Add(T entity);
T Remove(T entity);
IQueryable<T> GetAll();
int Save();
}
public class ProductRepository : IRepository<Product>
{
public Product Add(Product entity) { ... }
public Product Remove(Product entity) { ... }
public IQueryable<Product> GetAll() { ... }
public int Save() { ... }
}
public class CategoryRepository : IRepository<Category>
{
public Category Add(Category entity) { ... }
public Category Remove(Category entity) { ... }
public IQueryable<Category> GetAll() { ... }
public int Save() { ... }
}
public interface ICategoryService
{
Category Add(Guid gidProduct, Category category);
}
public class CategoryService : ICategoryService
{
public Category Add(Guid gidProduct, Category category){ ... } //Problem here
readonly IRepository<Category> _repository;
public CategoryService(IRepository<Category> repository) //Problem here
{
_repository = repository;
}
}
当我需要来自我服务中另一个存储库的信息时,每个类都有一个存储库,我该怎么办?
在上面的示例中,在我的服务层中,我有一个方法Add
一个产品(我找到了它的代码)和一个category
。
问题是我在产品存储库中进行搜索以恢复它,但在我的服务类类别中,没有产品存储库。,如何解决这个问题?
答案 0 :(得分:1)
首先,您需要为每个聚合根创建一个存储库,而不是为每个类创建一个存储库。
如果您需要访问服务中的多个存储库,只需依赖所有存储库,然后就可以将它们作为参数添加到构造函数中以进行依赖注入。
public CategoryService(CategoryRepository categoryRepository, ProductRepository productRepository)
{
_categoryRepository = categoryRepository;
_productRepository = productRepository;
}