防止NHibernate映射属性到代理

Pro*_*m.X 3 nhibernate

我正在寻找解决我的问题的方法,但我得到的是这种情况发生的原因,而不是防止发生.

我有一个类,WorkflowActivityInstance其中有一个集合WorkflowActivityInstanceTransitions表示工作流状态的转换.转换在一个Transitions属性中映射.

因此:WorkflowActivityInstance< -WorkflowActivityInstanceTransition

我想要一个关于该对象的视图,它将给WorkflowActivityInstance状态包括它的当前状态,这将是最新的,WorkflowActivityInstanceTransition没有用户编码器在Transitions属性上执行它们自己的排序和选择.

最初,我有:

public virtual IWorkflowActivityInstanceTransition CurrentState
{
    get { return Transitions.OrderBy(q => q.TransitionTimeStamp).LastOrDefault(); }
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

NHibernate.InvalidProxyTypeException:NHibernate.InvalidProxyTypeException:以下类型不能用作代理:FB.SimpleWorkflow.NHibernate.Model.WorkflowActivityInstance:方法CurrentState应为'public/protected virtual'或'protected internal virtual'.

我试图变得厚颜无耻,并将其转换为方法:

public IWorkflowActivityInstanceTransition GetCurrentState()
{
    return Transitions.OrderBy(q => q.TransitionTimeStamp).LastOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个非常相似的:

NHibernate.InvalidProxyTypeException:NHibernate.InvalidProxyTypeException:以下类型不能用作代理:FB.SimpleWorkflow.NHibernate.Model.WorkflowActivityInstance:方法GetCurrentState应为'public/protected virtual'或'protected internal virtual'.

我想CurrentState在我的模型类中保持非常简单的行为,并防止NHibernate过度使用并尝试映射/代理此属性.感觉这应该只是我不想映射的属性的属性...

我怎样才能做到这一点?

谢谢

弥敦道

cre*_*mor 10

NHibernate需要覆盖所有公共,受保护和内部方法,否则代理无法工作(您的代码可能会访问尚未初始化的代理).

我看不出你的属性不起作用的原因,但是你的方法错误很明显,你错过了virtual关键字.