如何映射IDictionary <enum,bool =“”>?</enum,>

时间:2012-10-08 12:36:52

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

如何使用FluentNHibernate映射字典?

IDictionary<SomeEnum, bool>

和..

IDictionary<string, bool>

像:

public class SomeClass
{    
   public int Id {get;set;}
   public IDictionary<SomeEnum, bool> Dictionary2 {get;set;} 
   public IDictionary<string, bool> Dictionary1 {get;set;} 
}

2 个答案:

答案 0 :(得分:1)

似乎Dictionary的映射可以按如下方式完成:

// IDictionary<string, bool>
HasMany(x => x.Dictionary1).AsMap<string>("keyColumn").Element("Enabled");

// IDictionary<SomeEnum, bool>  (Enum will be mapped as int)
HasMany(x => x.Dictionary2).AsMap("SomeEnum").Element("Enabled");  

// IDictionary<Entity, string>
HasMany(x => x.Dictionary3).AsEntityMap().Element("valueColumn"); 

答案 1 :(得分:0)

据我所知,您无法将字典映射到数据库。而且,SQL Server中的枚举没有等价物。为了实现IDictionary<string, bool>,我想,你需要创建单独的表,它将包含Id,你的String,布尔值和FK到SomeClass(多对一关系)。使用枚举字典是相同的情况,但该外表的内容取决于您的需要。