在我们的解决方案中,映射枚举时,不是简单地保存整数或文本描述,而是使用自定义IUserType
来解析数据库表的文本描述并检索相应的ID。 (这些值在应用程序启动时缓存,以加快速度)
这对单个Enum属性非常有效。映射代码(使用映射覆盖)看起来像这样....
POCO:
public class Connection
{
// Other properties omitted
public Protocol Protocol { get; set; }
}
映射覆盖:
mapping.Map(map => map.Protocol, "ProtocolID")
.CustomType<GenericEnumUserType<Protocol>>();
当我有要映射的枚举列表时,会出现问题。例如......
POCO:
public class Credential
{
// Other properties omitted
public ICollection<Protocol> Protocols { get; set; }
}
mapping.HasMany(x => x.Protocols)
.Table("TABLE")
.KeyColumn("COLUMN")
.Component(component =>
{
//MAP YOUR CUSTOM TYPE HERE
})
.Cascade.None()
.KeyNullable()
.Not.LazyLoad();
...但我无法弄清楚如何在CustomType
部分中连接MAP YOUR CUSTOM TYPE HERE
。
另一方面,this SO thread表示CustomType
无法用于收藏 - 但是该特定评论的日期是2009年,所以我希望自那时以来发生了一些变化。
这种类型的映射是否可行(如果是这样,我错过了什么)或者我是否需要开始寻找最合适的解决方案?
干杯。