如何将字典与实体作为键和类映射,并将相应的用户类型作为值?

时间:2011-11-17 21:26:06

标签: c# .net nhibernate fluent-nhibernate

我的一个实体中有以下属性:

IDictionary<SomeOtherEntity, IPcmStream> PropName { get; set; }

SomeOtherEntity显然是映射到数据库的另一个实体 IPcmStream是存在IUserType实现的接口。此实现将接口映射到byte[]列。它使用IPcmStream激活所有IUserTypeConvention次。{ 现在,如何使用Fluent NHibernate映射此属性?

我试过这样:

mapping.HasMany(x => x.PropName).AsMap("SomeOtherEntity_id");

但是这导致了一个例外,表明IPcmStream是一个未映射的类......

1 个答案:

答案 0 :(得分:1)

mapping.HasMany(x => x.PropName)
    .Table("Linktable")
    .AsEntityMap("SomeOtherEntity_id")
    .Element("PcmStream_id", e => e.Type<MyUserType>());

AsEntityMap告诉NH,字典的Key是一个映射实体,你给它提供了实体id的列。 Element表示值是简单元素,自定义类型从列“PcmStream_id”转换为类型