2012-12-14 35 views
5

Sınıfımda yinelenen bir numarayı eşleştirmem gerekiyor ancak istisna yapıyorum.Fluent NHibernate eşleştirmesi null enum

NHibernate.PropertyAccessException: Invalid Cast (özellik türü uyuşmazlıkları için eşlemenizi kontrol edin); App.Model.Stock ---> System.InvalidCastException belirleyicisi: Belirtilen döküm geçerli değil.

Sorunu aşağıda açıkladığım belirli bir özelliğe daralttım.

Bu daha önce here yanıtladı, ancak çözüm, artık olmayan bir sayfaya bağlanır.

Yalnızca ilgilendiğim bölümleri içermek üzere indirdiğim kodum İşte. Bir hata uzun olduğu ortaya çıktı

Map(x => x.Color).CustomType<int>(); 
Map(x => x.Color).CustomType<int?>(); 
Map(x => x.Color).CustomType<int>().Nullable(); 
Map(x => x.Color).CustomType<int?>().Nullable(); 

Bu: Ben de aynı sonuçlarla aşağıdakilerin tümünü denemiş

public class StockMap : ClassMap<Stock> 
{ 
    Map(x => x.Color).CustomType<int>(); 
} 

: Burada

public enum eColor 
{ 
    Red, 
    Blue 
} 

public class Stock 
{ 
    public virtual eColor? Color { get; protected set; } 
} 

(soyunmuş) benim eşleme olduğunu zaman önce ve bir geçici çözüm vardı. Fluent 1.3.0.0 ve NHibernate 3.3.1.4000 kullanıyorum.

cevap

8

Enum türünü, CustomType <T>(), örn. CustomType <eColor>(). Bu size veritabanında tamsayılar verecektir.

+0

Aynı sorun vardı, bu işe yaradı, teşekkür ederim! – iamserious