CSharp - 带有Ninject和Ninject工厂扩展的仓库 失去魔力?

  显示原文与译文双语对照的内容

我有一个使用通用知识库 Pattern 进行数据访问的应用程序。 由于应用程序需要使用几个不同的数据库,我使用Ninject工厂扩展实现了一个存储库。 这允许我为需要的各种数据库创建存储库。 我只是将DBContext传递到工厂,如下所示:


 private readonly IRepository database1;
 private readonly IRepository database2;

 public MembershipService(IRepositoryFactory repositoryFactory)
 {
 this.database1 = repositoryFactory.CreateRepository(new Context("Database1"));
 this.database2 = repositoryFactory.CreateRepository(new Context("Database2"));
 }

这段代码令人厌烦的是创建上下文所需的字符串。 上面示例中的字符串"database1"和"database2"。 当上面的代码被使用很多时,在整个项目中很多次对于一个简单的错误来说很容易。

如何解决这种情况? 我应该创建上下文工厂? 这仍然需要数据库名。 我可以用 Enums? 我tossing了很多想法,但似乎不适合

时间: 原作者:

我的通用知识库 Pattern 有同样的问题,这是我解决它的方法:

http://blog.staticvoid.co.nz/2012/01/multiple-repository-data-contexts-with.html

这允许我声明基于命名空间的特定类型的存储库,以来自不同的数据库。

在使用方面,你可以


public MembershipService(IRepository<User> userRepository, IRepository<AppRole> roleRepository)

用户和AppRole来自不同的DBcontexts

原作者:
...