我正在尝试在Fluent NHibernate自动覆盖中使用ReferencesAny()来映射其类型为接口的属性。我发现许多示例和类似的问题都表明使用ReferencesAny(),如下面的代码示例所示是正确的方法。但是,当我尝试这样做时,我得到一个MappingException。例外情况说“表Foo中的关联引用了一个未打开的类:IEntity。”据我所知,下面的代码应该可以正常工作。
class Foo
{
public virtual IEntity Entity{ get; set; }
}
public class FooMapOverride : IAutoMappingOverride<Foo>
{
public void Override(AutoMapping<Foo> mapping)
{
mapping.ReferencesAny(m => m.Entity)
.EntityTypeColumn("EntityType")
.EntityIdentifierColumn("EntityId")
.AddMetaValue<EntityBar>("EntityBar")
.AddMetaValue<EntityBaz>("EntityBaz")
.IdentityType<int>();
}
}
我该怎么做才能弄清楚为什么这不起作用?是否有调试技术可以让我深入了解这种映射失败的原因?为什么在使用Any(通过ReferencesAny()
)映射(据我所知)时,是否会抱怨未映射的接口类型否定了将接口类型映射到数据库的需要?