2012-03-13 93 views
8

我目前正在使用Fluent NHibernate的MVC 3項目。我利用System.DayOfWeek枚舉,但這種映射時,我收到以下錯誤 -使用Fluent Nhibernate從系統命名空間映射DayOfWeek

Stack Trace: 

[MappingException: Could not determine type for: DayOfWeek, for columns:  NHibernate.Mapping.Column(WeekStart)] 
NHibernate.Mapping.SimpleValue.get_Type() +456 
NHibernate.Mapping.SimpleValue.IsValid(IMapping mapping) +40 
NHibernate.Mapping.PersistentClass.Validate(IMapping mapping) +123 
NHibernate.Mapping.RootClass.Validate(IMapping mapping) +24 
NHibernate.Cfg.Configuration.ValidateEntities() +280 
NHibernate.Cfg.Configuration.BuildSessionFactory() +43 
FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() +54 

[FluentConfigurationException: An invalid or incomplete configuration was used while  creating a SessionFactory. 
Check PotentialReasons collection, and InnerException for more detail. 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET  
Version:4.0.30319.272 

用法示例 -

Map(x => x.WeekStart).CustomType(typeof(DayOfWeek)); 

我見過的要求在郵件列表和計算器,但在這個具體問題它的細微差別從來沒有被完全掌握,提出問題的人被提及如何使用自定義類型映射。

我很清楚如何在流利地圖上使用自定義類型功能並經常使用它。但是我不明白爲什麼這個枚舉尤其不能映射。我認爲它與它所屬的System命名空間有關係?

如果任何人都可以擺脫這種情況,我會很高興。

感謝

+0

一個過時的歌曲,但僞善你有沒有找到一個答案?您可以爲枚舉指定一個自定義類型的int,儘管該屬性會使屬性變髒,從而導致不必要的更新。 – 2012-12-23 01:29:05

回答

1

我DAYOFWEEK枚舉的映射與此映射工作。

mapping.Map(x => x.DayOfWeek); 

及其映射到我的mssql數據庫中的nvarchar(255)。

我的財產looklikes這

public virtual DayOfWeek DayOfWeek { get; set; } 

我使用NHibernate的版本:3.3.1.4000和流利的NHibernate的版本:1.3.0.733

1

與與NHibernate任何枚舉映射,保存自己一些悲痛(髒讀這會導致不必要的寫入,數據庫中指定的不同類型等),並且始終使用PersistentEnumType。

在這個例子中,創建PersistentEnumType:

public class NHibernateDayOfWeekEnumMapper : global::NHibernate.Type.PersistentEnumType 
{ 
    public NHibernateDayOfWeekEnumMapper() 
     : base(typeof(DayOfWeek)) 
    { 

    } 
} 

然後用它做你的映射:

Map(x => x.DayOfWeek).CustomType<NHibernateDayOfWeekEnumMapper>().Not.Nullable(); 

現在你已經有了不髒讀實體(等沒有不必要的寫入)和數據庫中的正確類型映射(當您使用SchemaExport生成模式時)。

欲瞭解更多信息,請參閱http://eashi.wordpress.com/2008/08/19/mapping-enumeration-of-type-int-in-nhibernate/

相關問題