0

FluentNHibernateとWCFを使用してサービスレイヤーを作成しようとしています。LazyLoadの操作方法は?たとえば、いくつかのオブジェクトを取得します。このオブジェクトには、LazyLoadでマップされたコレクションが含まれています。したがって、私のサービスメソッドはセッションを作成し、オブジェクトを取得してセッションを閉じます。怠惰なコレクションはどうですか?開いているセッションがないため、サービスの呼び出し元はデータにアクセスしません。これをどのように扱うのですか?

みんなありがとう!!

4

2 に答える 2

0

遅延読み込みが発生しますが、戻り値がWCF応答にシリアル化されるときにすべて発生します。たとえば、次のクラスがあります。

[DataContract]
public class Person
{
    [DataMember]
    public virtual string Name { get; set; }

    [DataMember]
    public virtual Address Address { get; set; }
}

[DataContract]
public class Address
{
}

Person.Addressそれが怠惰だとしましょう。住所を読み込まずに人を照会し、このオブジェクトをクライアントに返したいとします。

WCFと入力します。WCFはすべてのをシリアル化し、[DataMember]そのAddressうちの1つです。using (ISession)したがって、ゲッターが呼び出され、スコープ内にいる場合は遅延読み込みが実行されます。usingスコープを使用せず、変数を定義するだけの場合ISession(おそらく閉じない)、レイジークエリも実行されます。

于 2013-02-06T17:52:31.450 に答える
0

データベースに接続している場合にのみ、NHibernateで遅延読み込みを使用できます。

NHibernateの使用とWCFを介したデータへのアクセスを継続したい場合は、積極的な読み込みに切り替える必要があります。

WCFを削除する場合は、クライアントがデータベースに直接アクセスできるようにすることができます。

Nhiberhateを削除する場合は、WCFDataServicesを使用できます。

于 2013-02-06T17:45:35.150 に答える