NHibernate 与 petapoco 加载机制

标签 nhibernate petapoco

我很难理解 NHibernate 的 petapoco 加载机制。实际上我做了一个测试来比较两者在查询时的表现。

我的类(class)如下:

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 中,我观察到 DoSomeOtherWork永远不会被调用,而在 PetaPoco 中,当我从加载 User 进行查询时如Connection.db.Fetch<UserTest>(...)Connection.db.Query<UserTest>(...) ,我可以看到DoSomeOtherWork被调用。

为什么会这样?

有没有办法避免调用 DoSomeOherWork当使用 PetaPoco 使其具有与 NHibernate 相同的行为时?我不t want to use PetaPoco.忽略as I need to get and set the客户ID`。

最佳答案

PetaPoco 它是一个微型 ORM(比 Nhibernate 轻得多),并在您获取记录时具体化您的 POCO 对象。除此之外没有其他魔法,所以答案是:

不,您无法避免调用属性的 setter。

关于NHibernate 与 petapoco 加载机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10222550/

相关文章:

nhibernate - 多个表一对一

c# - 映射一个简单的数组

c# - PetaPoco 能否填充一个包含多个 POCO 的 View 模型列表?

asp.net-mvc-3 - 使用 PetaPoco 实现存储库模式

linq - NPoco/PetaPoco Fetch() 获取所有数据然后过滤客户端是否正常?

.net - 是否可以使用流畅的 nhibernate 映射设置 SQL 服务器列的描述?

mysql - NHibernate:读/写分离

nhibernate - 如何在 Nhibernate.Search 中添加数字字段?

c# - 应用程序启动时在 Umbraco 中使用外键创建表的空引用

asp.net-mvc - 使用 PetaPoco 与 StructureMap 的共享连接