Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多列多对一_C#_Nhibernate_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 多列多对一

C# 多列多对一,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一个遗留数据库和两个表之间的一对一关系。问题是关系使用两列,而不是一列。在nhibernate中是否有某种方式可以说,当获取引用实体时,它在join语句中使用了两列,而不是一列? 我有一个类似的桌子结构 任务进度 进步体 塔西德 分配ID 用户ID 任务 塔西德 分配ID 任务名 每个任务可以分配到不同的任务中。这意味着任务进度的唯一任务只能通过AssignmentId和TaskId字段创建 我试着用这个: References(x => x.Template)

我有一个遗留数据库和两个表之间的一对一关系。问题是关系使用两列,而不是一列。在nhibernate中是否有某种方式可以说,当获取引用实体时,它在join语句中使用了两列,而不是一列? 我有一个类似的桌子结构

任务进度

  • 进步体
  • 塔西德
  • 分配ID
  • 用户ID
任务

  • 塔西德
  • 分配ID
  • 任务名
每个任务可以分配到不同的任务中。这意味着任务进度的唯一任务只能通过AssignmentId和TaskId字段创建

我试着用这个:

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

但是,您不知道如何在多个列上映射join,有什么想法吗?

我假设您在示例代码中使用PropertyRef,这两个列不构成复合主键。如果是这种情况,那么您就不走运了,因为property ref只能接受一个属性。从中的注释判断,此功能显然在Hibernate中可用,但尚未移植到NHibernate

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


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

据我所知,没有属性。但你真的有一个1:1的关系,而不是由主键关联吗?你能发布足够多的表定义来说明这个问题吗?