5

私は自分の問題の解決策を探していますが、発生しないようにするのではなく、これが発生する理由だけが得られます。

ワークフローの状態の遷移を表すWorkflowActivityInstanceコレクションを持つクラスがあります。WorkflowActivityInstanceTransitionsトランジションはTransitionsプロパティ ファインにマッピングされます。

したがって: WorkflowActivityInstance<--WorkflowActivityInstanceTransition

WorkflowActivityInstance現在の状態を含む状態を提供するオブジェクトのビューが必要です。これはWorkflowActivityInstanceTransition、ユーザーコーダーがプロパティで独自の並べ替えと選択を実行することなく、単に最新のものになりTransitionsます。

もともと、私は持っていました:

public virtual IWorkflowActivityInstanceTransition CurrentState
{
    get { return Transitions.OrderBy(q => q.TransitionTimeStamp).LastOrDefault(); }
}

しかし、私はただ得ます:

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();
}

しかし、私は非常に似ています:

NHibernate.InvalidProxyTypeException: NHibernate.InvalidProxyTypeException: 次の型はプロキシとして使用できない場合があります: FB.SimpleWorkflow.NHibernate.Model.WorkflowActivityInstance: メソッド GetCurrentState は、'public/protected virtual' または 'protected internal virtual' である必要があります。

モデル クラスで の非常に単純な動作を維持し、CurrentStateNHibernate が自分自身に過度に到達してこのプロパティをマップ/プロキシしようとするのを防ぎたいと考えています。これは、マップしたくないプロパティの属性であるべきだと感じています...

どうすればこれを達成できますか?

4

2 に答える 2

13

NHibernate はすべての public メソッド、protected メソッド、および internal メソッドをオーバーライドする必要があります。そうしないと、プロキシが機能しません (コードがまだ初期化されていないプロキシにアクセスする可能性があります)。

プロパティが機能しない理由はわかりませんが、メソッドのエラーは非常に明確ですvirtual。キーワードがありません。

于 2013-05-22T05:54:11.380 に答える