我與已經通過以下方式被映射到其域模型的工作工作的正確方法:NHibernate的,與代理
- IProxy合同(包括身份證)
- 實體類實現合同
實施例:
public class Product : IProductProxy {}
類使用以下邏輯映射:
<class name="Product" table="[Products]" lazy="true" proxy="IProductProxy">
現在我發現下面的方法正常工作:
var result = session.Load<IProductProxy >(1);
var result = session.Get<IProductProxy>(1);
var result = session.Get<Product>(1);
雖然這些方法拋出「代理例外」或「無效強制轉換異常」
var result = session.Load<Product>(1);
我需要知道的是,使用代理和NHibernate的正確方式是什麼。例如,我雖然是直接與界面的工作就可以了,但是當我嘗試這樣做:
// successful save
var result = session.Get<Customer>("ALFKI");
result.Name = "XXX";
session.Update(result);
// if error occurs I receive wrong exception
// cannot find mapping for ICustomerProxy ERROR
var result = session.Get<ICustomerProxy>("ALFKI");
result.Name = "XXX";
session.Update(result);
我就應該總是轉換回IProxy或者我應該用我的實體類型?
提供自己的代理接口的原因是什麼? – cremor 2013-05-07 10:47:37
這不是問題 – Raffaeu 2013-05-07 12:37:32
提供自己的代理接口不是NHibernate代理的正常用法。如果我們知道你爲什麼這樣做,我們可能會更好地幫助你。 – cremor 2013-05-08 06:01:28