我很难理解 NHibernate 的 petapoco 加载机制。实际上我做了一个测试来比较两者在查询中的行为。
我的班级如下:
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.Load
在 NHibernate 中执行 a 时,我观察到它DoSomeOtherWork
从未被调用,而在 PetaPoco 中,当我从加载中执行查询时,User
例如Connection.db.Fetch<UserTest>(...)
or Connection.db.Query<UserTest>(...)
,我可以看到它DoSomeOtherWork
被调用。
为什么呢?
有没有办法DoSomeOherWork
在使用 PetaPoco 时避免调用,使其具有与 NHibernate 相同的行为?我t want to use
没有 PetaPoco.Ignore as I need to get and set the
CustomerID`。