문제

nhibernate 매핑에서 Yesno Boolean 유형의 역 동작을 얻는 가장 좋은 방법은 무엇입니까?

나는 'y'가 거짓을 의미하고 'n'이 진실을 의미하기를 원합니다.

Noyes 유형이 있습니까? 사용자 정의 유형을 작성합니까? 정말 쉬운 것이 있습니까?

부울을 역전시켜야하는이 문제는 40 개가 넘는 테이블의 하나 이상의 필드에 존재합니다. 레거시 데이터베이스에 적응하려고합니다.

도움이 되었습니까?

해결책

레거시 데이터베이스에서 이상한 데이터 형식을 다루는 것은 사용자 정의 유형을 구현하여 쉽게 달성 할 수 있음을 발견했습니다. 예를 들어, 최근에 간단한 사용자 유형을 만들었습니다. DateTime 양식에 8 자리 숫자 yyyyMMdd, 날짜가 내가 사용해야하는 DB2 덤프에 저장되는 방식이었습니다.

LOS Techies는 구현에 대한 예를 가지고 있습니다 IUserType 문제를 해결하는 데 사용할 수 있습니다. nhibernate의 iusertype를 사용하여 부울에 줄을 매핑합니다.

다른 팁

나는 비슷한 문제가 있었다. 내가 찾은 더 쉬운 솔루션은 nhibernate에서 Charboolantype를 확장하고 매핑에서 새 유형을 사용하는 것입니다. 그것은 그렇습니다 :

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