0

我正在慢慢尝试提高我对企业应用程序开发的了解。关于最佳实践,我已经了解了如何创建 iRepository 接口的具体存储库实现,到目前为止它是有意义的。

我面临的挑战是何时(经常发生)我想要返回来自一个结果集中的两个或多个表的数据,以及如何最好地处理这个问题。

我知道识别聚合根可能是最好的方法,但我想知道在使用特定/自定义存储库与通用存储库时如何处理接口和存储库。

通用存储库似乎是减少为每个所需实现创建单独 iRepositories 的需要的好方法,但问题是并非我的所有具体类都需要通用存储库接口中的所有方法,即有时我需要更多,而其他时候我需要更少。

我想知道处理这种情况的最佳做法是什么?开发人员通常是否拥有一个通用存储库接口,然后为更具体的数据访问需求创建更具体的存储库接口?

我已将此项目用作最佳实践的指南: http: //efmvc.codeplex.com/

4

1 回答 1

4

通用存储库应该只包含最少量的方法。然后,我通常会为每个聚合根创建一个特定的存储库(一个新接口和一个继承通用存储库的新类)。

就像是:

public interface IRepository<T>
{
    void Create(T);
    void Update(T);
    T Get(int key);
}

public interface IUserRepository : IRepository<User>
{
    User GetByUserName(string userName);
}

所以用户存储库看起来像:

public class UserRepository : Repository<User>, IUserRepository
{
     public User GetByUserName(string userName)
     {
         return DbContext.Users.FirstOrDefault(x => x.UserName == userName);
     }
}

但最近我转向查询,就像我在这里描述的那样:http: //blog.gauffin.org/2012/10/griffin-decoupled-the-queries/

于 2012-10-24T07:50:45.600 回答