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

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

是否有NoYes类型?你写自定义类型?什么东西真的很容易?

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

有帮助吗?

解决方案

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

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

其他提示

我有类似的问题。 我找到的更简单的解决方案是从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" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top