我很难理解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();
}
}
}
}
当我在NHibernate中执行User.Load
时,我发现DoSomeOtherWork
从未被调用过,而在PetaPoco中,我在加载User
时执行查询,例如Connection.db.Fetch<UserTest>(...)
或Connection.db.Query<UserTest>(...)
,我可以看到DoSomeOtherWork
被调用。
为什么会这样?
有没有办法避免在使用PetaPoco时调用DoSomeOherWork
,使其与NHibernate具有相同的行为?我不是t want to use
PetaPoco.Ignore as I need to get and set the
CustomerID`。
答案 0 :(得分:2)
PetaPoco它是一个微型ORM(比Nhibernate轻得多),并在您获取记录时实现您的POCO对象。没有其他魔法,所以答案是: