Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# NHibernate使用复合id实体多对一_C#_Nhibernate_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# NHibernate使用复合id实体多对一

C# NHibernate使用复合id实体多对一,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,如何映射“一”实体具有复合id的多对一关系? 例如: public class SingleEntity { public int FirstId{get;set;} public int SecondId{get;set;} public string SomeData{get;set;} } 实体ManyEntity有SingleEntity的FirstId和SecondId列(除primaryKey外),因此我希望能够映射关系,使ManyEntity看

如何映射“一”实体具有复合id的多对一关系? 例如:

public class SingleEntity  
{  
  public int FirstId{get;set;}  
  public int SecondId{get;set;}  
  public string SomeData{get;set;}  
}  
实体
ManyEntity
SingleEntity
的FirstId和SecondId列(除primaryKey外),因此我希望能够映射关系,使
ManyEntity
看起来像这样:

public class ManyEntity  
{  
public int Id{get;set;}  
public SingleEntity Single{get;set;}  
public string Name{get;set;}  
}  

如何使用NHibernate实现这一点?

Fluent允许您使用方法指定复合id映射。但是,正如我们在本方法文档中所看到的:

注意:尽可能使用代理键而不是复合键

复合ID通常需要花费大量精力才能获得可讨论/无收益如果可以,我强烈主张使用代理密钥。这要容易得多

但是,如果您仍然坚持使用DB模式,那么这些问题可能会对您有所帮助:


如果你用谷歌搜索这些短语(fluent nhibernate composite id),你会很快发现大量的链接不知何故也包含单词“problem”

问题是由于与传统软件的向后兼容性,DB模式无法更改。我知道可以使用复合id映射单个实体,但是如何从多个实体的角度映射连接?