如何使用Fluent NHibernate映射实体 - >接口关系?

Kyl*_*est 7 nhibernate fluent-nhibernate

给定以下类定义:

public class Order {
  public IProduct Product {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我有这个(流畅的)映射

References(x=>x.Product, "ProductId");
Run Code Online (Sandbox Code Playgroud)

并获得此异常:表Orders中的关联引用了一个未映射的类,这是有道理的,因为它不知道我将传递给它的实现.

我明白为什么我必须在映射中定义类型(IProduct可能是任何东西),但我不知道如何做到这一点.

谢谢,

凯尔

Stu*_*Stu 5

我想你要找的是 .References<Product>(x=>x.Product, "ProductId");

顺便提一下,情况也是如此 .HasMany<>

这似乎与<... class="Product" />xml中的相同

我不建议映射到接口,因为它打破了使用它的全部意义 - 一旦它开始实现IStorable而你遇到问题并且NH无法处理多重继承.


yfe*_*lum 2

尝试映射接口IProduct而不是具体类Product。(注意,我不是在谈论映射Productclass 的字段Order。)