![]() |
1
1
由于Unity不支持(或者至少我正在使用的版本不支持)传入构造函数参数,而不是依赖注入本身,因此传入现有的nhisession是不可能的;但我确实希望UOW中的所有对象共享同一个会话。 我通过拥有一个控制存储库类来解决这个问题,该类在每个线程的基础上管理对ISession的访问:
(这里,
因此,对给定存储库的访问是
然后将其覆盖,以便您可以使用
一个给定的类型有一个专门的存储库(即需要的比它能从中得到的更多)
这里的代码比上面的要多得多(我已经将示例代码简化了很多),但是您可以理解其中的大意。
在我的Web应用程序中,每个请求都有会话,所以
|
![]() |
2
0
1) 要在每个方法上指定容器,我有一个单独的类(“ SessionManager )然后通过静态属性调用。通过这样做,下面是一个使用我的Save实现的示例:
global.asax 第页。
3) 您不需要有助手来实例化负载。你不妨用Get代替Load。更多信息@ Difference between Load and Get 4) 使用当前的代码,您必须为每个需要的域对象(StoredWillRepository、PersonRepository、CategoryRepository等…)重复几乎相同的代码,这看起来像是一个拖拉。你很可能需要一个 generic class 在NHibernate上操作,比如:
在我的实现中,我可以使用 something like
|
![]() |
3
0
从技术上讲,我的问题的答案是使用container.Resolve的重载,它允许您将构造函数参数指定为匿名类型:
|
![]() |
Nico Pizzo · 子查询上的nhibernate联接 7 年前 |
![]() |
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 7 年前 |
![]() |
Stu · 具有特定类型的字符串外键的NHibernate映射 7 年前 |
![]() |
Zout · 为Hibernate的HiLo算法管理的列生成ID 7 年前 |