首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Fluent NHibernate映射实体->接口关系?

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

Stack Overflow用户
提问于 2009-06-20 18:49:19
回答 4查看 3.6K关注 0票数 7

给定以下类定义:

代码语言:javascript
复制
public class Order {
  public IProduct Product {get;set;}
}

我有这个(流畅的)映射

代码语言:javascript
复制
References(x=>x.Product, "ProductId");

还有一个例外:表Orders中的一个关联引用了一个未映射的类,这是有意义的,因为它不知道我将传递给它什么实现。

我理解为什么我必须在映射中定义类型(IProduct可以是任何类型),但我不确定如何定义。

谢谢,

凯尔

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-20 18:54:31

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

票数 2
EN

Stack Overflow用户

发布于 2009-11-25 01:04:11

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

顺便说一句,.HasMany<>也是如此。

这似乎与xml中的<... class="Product" />做同样的事情。

我不建议映射到接口,因为它打破了使用一个接口的全部要点-一旦开始实现IStorable,您就会遇到问题,而NH无法处理多重继承。

票数 5
EN

Stack Overflow用户

发布于 2009-06-22 06:01:02

您可以使用适当的继承模型将interface->实现关系映射为继承关系。

这将意味着映射IProduct,然后在IProduct映射中创建Product的子类映射,例如使用每个层次结构的表。

这还允许您映射不属于IProduct接口的产品类中的其他数据,还允许您以相同的方式映射其他IProduct实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1022227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档