나는 메시지 형식이 전자 메일인지 또는 Sms인지를 나타내는 열거 형을 가진 클래스가 있습니다. 열거 형이 정의 :SQL Server NHibernate - int 매핑을 열거
public enum ReminderType
{
Email = 1,
Sms = 2
}
이 유형을 활용 클래스 보이는 같은 :
public class Reminder : EntityBase
{
public virtual string Origin { get; set; }
public virtual string Recipient { get; set; }
public virtual ReminderType Type { get; set; }
public virtual Business Business { get; set; }
public virtual DateTime Created { get; set; }
public Reminder()
{
Created = DateTime.UtcNow;
}
}
내가 그러나 데이터베이스에 입력 알림의 엔티티를 유지하려고, 나는 다음과 같은 오류가 발생합니다 :
System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting the nvarchar value 'Email' to data type int.
백킹 필드 유형 int
이다, 그래서 NHibernate에 기본적으로 문자열 표현을지도하려고하는 이유를 모르겠어요. 나는 유창함 자 NHibernate를 사용하고,하고 관련 매핑 코드는 다음과 같습니다
mappings.Override<Reminder>(map =>
{
map.Map(x => x.Type).Column("Type")
});
나는 자 NHibernate의 기본 동작의 int로 열거를 매핑하는 것입니다 확신 해요, 그래서 왜이 경우에는 그렇게되지 않는 이유는 무엇입니까? SQL Server 2005를 사용하고 있습니다. 내가 같은 일을하고 있고 그렇게처럼 작동있어
전자 메일은 Type 속성의 문자열 값입니다. Nhibernate는 정수 값 1로 저장하려고 시도하지만 대신 'Email'문자열을 저장하려고하므로 오류가 발생합니다. 왜 그렇게하고 있는지 모르겠지만 ... – Chris
http://stackoverflow.com/questions/439003/how-do-you-map-an-enum-as-an-int-value-with-fluent- nhibernate – dotjoe
또는 http://stackoverflow.com/questions/1483044/mapping-enum-with-fluent-nhibernate –