olarak geçmişte eşleştirmek için bu How do you map an enum as an int value with fluent NHibernate? kullanılan ama son zamanlarda NHibernate 3 geçiş yaptık ve bu artık işe görünmüyor. EnumConvention sınıfıma kesme noktaları koyuyorum ve vurulmuyorlar. Veritabanına isabet eden sorgu, enum varsayılan yapılandırma olan bir dize olarak sahiptir.Harita Enum Akıcı NHibernate ile Int ve NHibernate 3
NHibernate 3 ile bu nasıl çalışır? İşte
Güncelleme
oluşturulan eşleme dosyasının bir parçasıdır:
<property name="ComponentType" type="FluentNHibernate.Mapping.GenericEnumMapper`1[[...ComponentType, ..., Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], FluentNHibernate, Version=1.1.0.0, Culture=neutral, PublicKeyToken=8aa435e3cb308880">
<column name="ComponentTypeId" />
</property>
bir IUserTypeConvention
çeteleler için belirtilen zaman bir GenericEnumMapper
kullanacağı konusunda hiçbir Doğru görünmüyor.
İşte benim konvansiyonudur:
public class EnumConvention : IUserTypeConvention
{
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(e => e.Property.PropertyType.IsEnum);
}
public void Apply(IPropertyInstance instance)
{
instance.CustomType(instance.Property.PropertyType);
}
}
Gerçekten bu egzersizden kazanmak için neye durduğunuzu görmüyorum ama bu durum bir sebepten dolayı kaldırılmış olabilir çünkü onlar bir şey bulamamışlardı. – Baz1nga
artık çalışmıyor gibi görünüyor. Peki bu nasıl yapılabilir? 'Harita (...) .CustomType() Doing' çalışmaz. Sorunlara neden olur. Özel bir IUserType yapmayı deneyeceğim ve bunun şimdilik işe yarayıp yaramadığını göreceğim. –
Enum yerine int olarak saklamak için herhangi bir neden var mı diyorsun? Mem nt bir prob gerçekten bir neden göremiyorum .. dize enums kod güvenli .. – Baz1nga