C# 多列多对一
我有一个遗留数据库和两个表之间的一对一关系。问题是关系使用两列,而不是一列。在nhibernate中是否有某种方式可以说,当获取引用实体时,它在join语句中使用了两列,而不是一列? 我有一个类似的桌子结构 任务进度C# 多列多对一,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一个遗留数据库和两个表之间的一对一关系。问题是关系使用两列,而不是一列。在nhibernate中是否有某种方式可以说,当获取引用实体时,它在join语句中使用了两列,而不是一列? 我有一个类似的桌子结构 任务进度 进步体 塔西德 分配ID 用户ID 任务 塔西德 分配ID 任务名 每个任务可以分配到不同的任务中。这意味着任务进度的唯一任务只能通过AssignmentId和TaskId字段创建 我试着用这个: References(x => x.Template)
- 进步体
- 塔西德
- 分配ID
- 用户ID
- 塔西德
- 分配ID
- 任务名
References(x => x.Template)
.Columns()
.PropertyRef()
但是,您不知道如何在多个列上映射join,有什么想法吗?我假设您在示例代码中使用PropertyRef,这两个列不构成复合主键。如果是这种情况,那么您就不走运了,因为property ref只能接受一个属性。从中的注释判断,此功能显然在Hibernate中可用,但尚未移植到NHibernate 更新: 您添加的模式看起来像一个多对多模式,在任务和分配之间有额外的数据关系。TaskProgress是任务和分配之间的链接表。如果TaskProgress没有额外的UserId字段,那么可以将其建模为简单的多对多。因为链接表有额外的数据,所以变得有点复杂
使用附加数据的多对多建模通常是通过创建表示链接表(TaskProgress)的对象,并将关系建模为两个一对多关系。也就是说,任务和分配与任务进度有一对多的关系。TaskProgress具有任务、分配和用户的属性。据我所知,没有属性。但你真的有一个1:1的关系,而不是由主键关联吗?你能发布足够多的表定义来说明这个问题吗?