首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate DataTypes - NoYes布尔值

NHibernate DataTypes - NoYes布尔值
EN

Stack Overflow用户
提问于 2009-03-03 19:06:55
回答 2查看 3.4K关注 0票数 1

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

我希望'Y‘表示假,'N’表示真。

是否有NoYes类型?您是否编写了自定义类型?真的很容易吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-03 19:17:22

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

洛杉矶的技术人员有一个实现IUserType的例子,你可以用它来解决你的问题:Mapping Strings to Booleans Using NHibernate's IUserType

票数 5
EN

Stack Overflow用户

发布于 2012-02-13 21:05:26

我也遇到过类似的问题。我找到的更简单的解决方案是从NHibernate扩展CharBooelanType,并在映射上使用新类型。应该是这样的:

代码语言:javascript
复制
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"; }
        }
    }
}

映射应该是这样的:

代码语言:javascript
复制
<property name="MyProperty" column="MyColumn" type="MyAssembly.MyNamespace.NewBoolType, MyAssembly" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/607693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档