【问题标题】:mapping a collection via IUserType通过 IUserType 映射集合
【发布时间】:2012-07-08 18:55:57
【问题描述】:

我需要用一些逻辑加载一个类(调整),所以我在 Nhibernate 中实现了 IUserType。当它是一个单一的参考,它工作正常:

    Map(p => p.DefaultAdjustment)
        .CustomType(typeof(AdjustmentCustomMap));

它的SqlType是字符串。
但是,我也有一个来自 Adjustment 的集合,我不知道如何映射它!

        HasMany(p => p.Adjustments)
            .Cascade.AllDeleteOrphan()
            .Inverse())
            ;

如何让我的 IUserType 实现来加载集合?
我正在使用 NH 3.3
提前致谢。

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate usertype iusertype


    【解决方案1】:

    尝试将.Element() 与您的HasMany 映射一起使用。由于您不是映射实体集合,而是简单对象的集合,因此您需要使用与映射stringint、@987654326 的集合相同的映射@...

    HasMany(p => p.Adjustments)
        .Element("Adjustment", e => e.Type<AdjustmentCustomMap>())
        .Cascade.AllDeleteOrphan()
        .Inverse())
        ;
    

    Element方法的第一个参数是列名。

    【讨论】:

    • 问题是当我添加一些东西到列表中时,NHibernate 不会持久化它。它可以检索数据,但不能保存它
    • 如果您从映射中删除 .Inverse() 会怎样? colinramsay.co.uk/diary/2008/03/15/… 如果这没有帮助,请尝试调试您的自定义类型。查看是否调用了 Set 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多