코드로 NHibernate 3.2 매핑을 사용하면 (Fluent-nhibernate가 아님), Enum 필드를 기본 int 표현 대신 문자열 열로 매핑하려고합니다. 나는 올바른 구문을 얻을 수 없다.코드로 NHibernate 3.2 맵핑에서 문자열로 enum 매핑
예를 들어:
는 XML 매핑에서public class Account {
public enum StateType { Pending, Active, Cancelled, Suspended }
...
public virtual StateType State { get; set; }
...
}
, 당신이 사용할 수있는 NHibernate.Type.EnumStringType
(this link 참조)하지만 난 그것을 코드로 매핑 할 어떻게?
NHibernate.Mapping.ByCode.ModelMapper mapper = new NHibernate.Mapping.ByCode.ModelMapper();
mapper.Class<Account>(map => {
map.Id(x => x.Id, attr => {
attr.Column("id");
attr.Generator(NHibernate.Mapping.ByCode.Generators.Identity);
});
// Default 'int' mapping
//map.Property(x => x.State);
// Cannot implicitly convert type 'StateType' to 'NHibernate.Type.EnumStringType'
//map.Property<NHibernate.Type.EnumStringType<Account.StateType>>(x => x.State);
업데이트 :
이 매핑을 사용하여, 나는 그것이 DB에 문자열로 저장 얻기 위해 관리하지만, 객체 모델로 DB에서로드 할 때 지금은 예외가. 객체를로드 할 때
map.Property(x => x.State, attr => { attr.Type(NHibernateUtil.String); });
이 내가 할 예외가 있습니다 :
Invalid Cast (check your mapping for property type mismatches); setter of Model.Account