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

c# – 具有多个列的多对一

发布时间:2020-12-15 03:42:35 所属栏目:百科 来源:网络整理
导读:我有两个表之间的遗留数据库和一对一的关系.事实是,关系使用两列,而不是一列.在nhibernate中有没有办法说,在获取引用实体时,它在连接语句中使用了两列,而不是一个? 我有一个类似的表结构 TaskProgress ProgressId TaskId AssignmentId UserId 任务 TaskId A
我有两个表之间的遗留数据库和一对一的关系.事实是,关系使用两列,而不是一列.在nhibernate中有没有办法说,在获取引用实体时,它在连接语句中使用了两列,而不是一个?
我有一个类似的表结构

TaskProgress

> ProgressId
> TaskId
> AssignmentId
> UserId

任务

> TaskId
> AssignmentId
> TaskName

每个任务可以在不同的任务中分配.这意味着任务进度的唯一任务只能由AssignmentId和TaskId字段建立.

我试图用这个:

References(x => x.Template)
            .Columns()
            .PropertyRef()

但是无法得到如何映射连接多列,任何想法?

解决方法

我假定您在示例代码中使用PropertyRef,这两列不会形成复合主键.如果是这样,那么你没有运气,因为property-ref只能接受一个属性.根据 issue NH-1722的评论,这个功能显然在Hibernate中可用,但尚未移植到NHibernate.

更新:
您添加的模式看起来像一对多对数,与任务和分配之间有额外的数据关系. TaskProgress是Task和Assignment之间的链接表.如果TaskProgress没有附加的UserId字段,那么您可以将其建模为一个简单的多对多.因为链接表有额外的数据,它会变得更复杂一些.

具有附加数据的多对多通常通过创建表示链接表(TaskProgress)的对象进行建模,并将关系建模为两个一对多关系.也就是说,任务和作业与TaskProgress有一对多的关系. TaskProgress具有任务,作业和用户的属性.

(编辑:李大同)

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

    推荐文章
      热点阅读