2012-12-14 16 views
5

Muszę mapować wyliczenie zerowe w mojej klasie, ale dostaję wyjątków.Fluent NHibernate mapowanie zerowalne enum

NHibernate.PropertyAccessException: Niepoprawny rzut (sprawdź odwzorowanie na niedopasowania typu właściwości); seter App.Model.Stock ---> System.InvalidCastException: Określony rzut jest niepoprawny.

Zawęziłem problem do jednej konkretnej nieruchomości, którą opisuję poniżej.

To zostało wcześniej odebrane here, ale rozwiązanie prowadzi do strony, która już nie istnieje.

Oto mój kod, który zredukowaliśmy, aby zawierał tylko te części, które mnie interesują.

public enum eColor 
{ 
    Red, 
    Blue 
} 

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

Oto mój mapowanie (okrojona):

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

Próbowałem wszystkie z poniższych kryteriów z tych samych wyników:

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(); 

ten pojawił się bug długa dawno temu i było obejście. Używam Fluent 1.3.0.0 i NHibernate 3.3.1.4000.

Odpowiedz

8

Należy podać typ wyliczenia w CustomType <T>(), np. CustomType <eColor>(). To da ci liczby całkowite w bazie danych.

+0

Miał ten sam problem, zadziałało, dziękuję! – iamserious

Powiązane problemy