2

NHibernateのペタポコローディングメカニズムを理解するのに苦労しています。実際、私は両方がクエリでどのように動作するかを比較するためのテストを行いました。

私のクラスは次のとおりです。

UserTest.cs次のプロパティを使用します。

private string name;
private int id;
private int customerId;

public int ID
{
    get { return id; }
    set { id = value; }
}

public string Name
{
    get { return name; }
    set { name = value; }
}

public int? CustomerID
{
    get { return customerId; }
    set
    {
        if (value != customerId)
        {
            customerId = value;
            if (this.ID > 0)
            {
                DoSomeOtherWork();
            }
        }
    }
}

User.LoadNHibernateでaを実行するDoSomeOtherWorkと、呼び出されないことがわかりましたが、PetaPocoでは、またはUserなどの読み込みからクエリを実行すると、呼び出されていることがわかります。Connection.db.Fetch<UserTest>(...)Connection.db.Query<UserTest>(...)DoSomeOtherWork

どうしてこんなことに?

DoSomeOherWorkPetaPocoを使用するときに、NHibernateと同じ動作をするように呼び出すことを回避する方法はありますか?私はt want to usePetaPocoを使用していません。CustomerID`を無視しas I need to get and set theます。

4

1 に答える 1

3

PetaPoco はマイクロ ORM (Nhibernate よりもはるかに軽量) であり、レコードをフェッチするときに POCO オブジェクトを具体化します。それ以外の魔法はないので、答えは次のとおりです。

いいえ、プロパティのセッターを呼び出すことは避けられません。

于 2012-04-19T14:28:37.843 に答える