1

在 NHibernate 映射中获得 YesNo 布尔类型的反向行为的最佳方法是什么?

我希望“Y”表示错误,“N”表示正确。

有 NoYes 类型吗?你写自定义类型吗?真的很容易吗?

需要反转布尔值的问题存在于 40 多个表中的至少一个字段上。试图适应遗留数据库。

4

2 回答 2

5

我发现处理遗留数据库中奇怪的数据格式可以通过实现自定义类型轻松实现。例如,我最近制作了一个简单的用户类型来映射DateTime到表单上的 8 位数字yyyyMMdd,这恰好是日期存储在我必须使用的 DB2 转储中的方式。

Los Techies 有一个实现示例IUserType,您可以使用它来解决您的问题:使用 NHibernate 的 IUserType 将字符串映射到布尔值

于 2009-03-03T19:17:22.383 回答
1

我有一个类似的问题。我发现的更简单的解决方案是从 NHibernate 扩展 CharBooelanType 并在映射上使用新类型。它会是这样的:

using NHibernate.Type;
using NHibernate.SqlTypes;

namespace MyAssembly.MyNamespace 
{
    public class NewBoolType : CharBooleanType 
    {
        public NewBoolType()
            : base(new AnsiStringFixedLengthSqlType(1)) { }

        protected override string TrueString 
        {
            get { return "N"; }
        }

        protected override string FalseString 
        {
            get { return "Y"; }
        }

        public override string Name 
        {
            get { return "inverted_bool"; }
        }
    }
}

映射将是这样的:

<property name="MyProperty" column="MyColumn" type="MyAssembly.MyNamespace.NewBoolType, MyAssembly" />
于 2012-02-13T13:05:26.210 回答