加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用Roles或Composition在NHibernate中映射类

发布时间:2020-12-15 04:30:09 所属栏目:百科 来源:网络整理
导读:我相信这是一个常见的问题/问题,但未能找到一个干净简洁的答案. 问题 如何映射看似具有继承关系的实体: Company Supplier Manufacturer Customer 但是,供应商可以是制造商. 要么 Person Doctor Patient Employee 患者可以是医生,也可以是员工. 建议:使用角
我相信这是一个常见的问题/问题,但未能找到一个干净简洁的答案.

问题

如何映射看似具有继承关系的实体:

Company
  Supplier
  Manufacturer
  Customer

但是,供应商可以是制造商.

要么

Person
  Doctor
  Patient
  Employee

患者可以是医生,也可以是员工.

建议:使用角色

在NHibernate论坛的讨论中,响应通常是多重继承.

http://forum.hibernate.org/viewtopic.php?t=959076

他们建议的解决方案是使用组合或使用“角色”.但是,我找不到任何关于如何做到这一点的例子或解释.

“Favor composition over inheritance.”
Remember that little goodie from
class? In this instance I have to
agree that you are trying multiple
inheritance– not possible in C# or
Java (yet). I,personally,would
encourage you to think about
re-modeling so you have a Person
object and a person has a one-to-many
collection of Roles.

解决方法

您可能想要考虑使用角色.因此角色将拥有一组人员.或者一个人将拥有一组角色或两者兼而有之.这可能意味着有一个将人员映射到角色的关联类.

使用人们共有的所有属性定义Person类.然后定义一个Role超类和DoctorRole,PatientRole和EmployeeRole子类(假设每个角色都有不同的属性).

Person类可以定义一组角色,Role类可以定义一组人员.或者创建一个Association类可能更容易,我们称之为PeopleRole.

This页面解释了如何进行映射,以便PeopleRole是一个复合元素.查看Order / Product / LineItem示例.你的人就像Order,PeopleRole就像LineItem,Role就像Product.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读