给定以下类定义:
public class Order {
public IProduct Product {get;set;}
}我有这个(流畅的)映射
References(x=>x.Product, "ProductId");还有一个例外:表Orders中的一个关联引用了一个未映射的类,这是有意义的,因为它不知道我将传递给它什么实现。
我理解为什么我必须在映射中定义类型(IProduct可以是任何类型),但我不确定如何定义。
谢谢,
凯尔
发布于 2009-06-20 18:54:31
尝试映射接口IProduct而不是具体的类Product。(注意,我不是在讨论映射类Order的Product字段。)
发布于 2009-11-25 01:04:11
我想你要找的是.References<Product>(x=>x.Product, "ProductId");
顺便说一句,.HasMany<>也是如此。
这似乎与xml中的<... class="Product" />做同样的事情。
我不建议映射到接口,因为它打破了使用一个接口的全部要点-一旦开始实现IStorable,您就会遇到问题,而NH无法处理多重继承。
发布于 2009-06-22 06:01:02
您可以使用适当的继承模型将interface->实现关系映射为继承关系。
这将意味着映射IProduct,然后在IProduct映射中创建Product的子类映射,例如使用每个层次结构的表。
这还允许您映射不属于IProduct接口的产品类中的其他数据,还允许您以相同的方式映射其他IProduct实现。
https://stackoverflow.com/questions/1022227
复制相似问题