我想在NHibernate中使用Fluent NHibernate映射一個枚舉集合,然後對該枚舉集合的內容執行查詢,但系統每次都會拋出異常。在NHibernate中映射一個枚舉集合
我有一個Widget類,映射到Widget表。還有一個WidgetType枚舉,並且一個Widget實例可以有許多WidgetTypes,通過WidgetTypes屬性映射。該屬性需要映射到一個單獨的表WidgetTypeRef,它帶有兩個整數列:WidgetId和WidgetType。
public class Widget
{
/* omitted */
public IList<WidgetType> WidgetTypes { get; set; }
}
public enum WidgetType
{
SomeType = 0,
SomeOtherType = 1,
YetOneMoreType = 2
}
public partial class WidgetMapping : IAutoMappingOverride<Widget>
{
public void Override(AutoMapping<Widget> mapping)
{
/* omitted */
mapping.HasMany(w => w.WidgetTypes)
.Table("WidgetTypeRef")
.KeyColumn("WidgetId")
.Element("WidgetType");
}
}
我無法控制數據庫模式;該架構無法更改。模式必須存儲與Widget關聯的WidgetTypes的整數值,並且不能轉換爲匹配枚舉的字符串版本。我非常努力保持enum的強類型,並且避免爲Ref表創建新實體。
其他類具有與「.CustomType(typeof(someTypeEnum)」配置一起工作的基於枚舉的類型屬性,但HasMany映射中沒有CustomType屬性使用上面的HasMany映射,對集合的查詢拋出「無法確定成員類型」異常
這是甚至可能的?應該如何設置屬性?應如何配置Fluent映射?如何查詢集合(我的查詢只需要與一個Any或Contains)?