|
|
1
2
这个想法来自 my answer to your previous question 一般的IRepository只在您的基础结构层中知道—它不会在这个层之外发布。当您将ISession发布到非泛型存储库时,它们将获得一个非常通用的接口,因为它们可以访问ISession进行查询。不公开ISession的问题是,您的通用存储库将:
将NHibernate的查询接口隐藏在facade中似乎有点浪费(一般存储库仅限于此)。 在我看来,如果您选择nHibernate,您应该利用它所提供的功能,并在整个基础结构dll(包括测试)中保持依赖性。将泛型IRepository接口看作NHibernate的助手接口,以减少存储库中重复代码的数量。 |
|
|
2
2
我同意NHibernate不应该被完全抽象的原则,但是我发现NHibernate的查询接口可以被隐藏起来而不需要太多的麻烦,这可以通过使用查询对象来实现。 每个查询对象都应该利用NHibernate提供的功能(ISession、ICriteria、IQuery等),并且可以通过实现IRepository来执行。
然后你可以使用上面的公式:
|
|
|
Munerz · C++使用for循环迭代并调用其中的函数 8 年前 |
|
|
Flo · GO中的开放式设计和可扩展性 8 年前 |
|
|
Starwolf-001 · 为什么说锁违反了抽象和可组合性原则? 8 年前 |
|
|
janhartmann · MongoDb和实体框架上的抽象 11 年前 |
|
|
djhaskin987 · 如何最好地与clojure抽象集成? 12 年前 |
|
|
OldMcFartigan · C++:抽象类中需要静态函数 12 年前 |