C# NHibernate使用复合id实体多对一
如何映射“一”实体具有复合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看
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映射单个实体,但是如何从多个实体的角度映射连接?