gpt4 book ai didi

c# - 如何正确实现IUserType?

转载 作者:IT王子 更新时间:2023-10-29 04:27:52 25 4
gpt4 key购买 nike

我需要创建一个 custom type对于 NHibernate通过编写实现 IUserType 的新映射器类。虽然覆盖大多数方法和属性相对简单,但我在理解如何正确处理以下成员时遇到了一些困难:

  • object Assemble(object cached, object owner);
  • object DeepCopy(object value);
  • object Disassemble(object value);
  • object Replace(object original, object target, object owner);

我不明白他们的目的是什么;更重要的是,如何正确实现它们。我见过的大多数示例只返回原始输入参数。

public object DeepCopy(object value)
{
return value;
}

public object Replace(object original, object target, object owner)
{
return original;
}

public object Assemble(object cached, object owner)
{
return cached;
}

public object Disassemble(object value)
{
return value;
}

如何在真实案例或更复杂的场景中正确实现这些方法

最佳答案

看看 Ritesh Rao 在他的 NCommon 中是如何做到这一点的框架:

MoneyUserType实现一个名为 CompositeUserTypeBase 的基类

评论中有更多细节,但总结一下:

  • DeepCopy - 应返回持久状态的深拷贝,在实体和集合处停止
  • 反汇编 - 将对象转换为其“可缓存”表示(即关联必须作为标识符值缓存)
  • Assemble - 从可缓存的表示中重建一个对象

It's explained in a lot more detail here

关于c# - 如何正确实现IUserType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com