在nhibernate中映射两个同名列

在nhibernate中映射两个同名列,nhibernate,fluent-nhibernate,nhibernate-mapping,hibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Hibernate Mapping,我遇到了一个案例,我们有一个列映射了两次(un beknown to us…),现在更新抛出了“参数+1不存在错误” 有没有合适的方法可以实现以下映射 (请注意,这是一个继承的数据库…) 这是一个无效的映射。同一列不能使用两次 我的建议是将c_matter和c_client映射为标量属性,并使用查询检索相应的事务和客户端。这是无效的映射。同一列不能使用两次 我的建议是将c_matter和c_client映射为标量属性,并使用查询检索相应的matter和client。您可以选择将client列标记

我遇到了一个案例,我们有一个列映射了两次(un beknown to us…),现在更新抛出了“参数+1不存在错误”

有没有合适的方法可以实现以下映射

(请注意,这是一个继承的数据库…)


这是一个无效的映射。同一列不能使用两次


我的建议是将
c_matter
c_client
映射为标量属性,并使用查询检索相应的事务和客户端。

这是无效的映射。同一列不能使用两次


我的建议是将
c_matter
c_client
映射为标量属性,并使用查询检索相应的matter和client。

您可以选择将client列标记为只读

References(x => x.Matter).Columns(new[] { "c_client", "c_matter" }).NotFound.Ignore();
References(x => x.Client).Column("c_client").ReadOnly();

这将使NHiberante不会尝试更新它,您可以选择将客户端列标记为只读

References(x => x.Matter).Columns(new[] { "c_client", "c_matter" }).NotFound.Ignore();
References(x => x.Client).Column("c_client").ReadOnly();

这应该使NHiberante不会尝试更新它

在实体中客户端字段是否需要更新?我不认为他们需要更新-如果您有@diago更好的替代方案,我很乐意听到!客户端字段是否需要在实体中可更新?我认为不需要-如果您有@diago更好的替代方案,我很乐意听到!这是我应该想到的答案!事实上,在这个想法上,有没有关于如何将IRepository深入到实体层的建议?最不显眼的是传递它
theEntity.GetMatter(存储库)
好主意。。!我把它完全去掉了,把与客户机有关的任何事情都保留在一个客户机服务类中——因为它需要额外的查询才能得到它。当需要从DTO返回DTO时,我还添加了DTO,因此无论如何都不能通过主对象访问DTO。。(刚刚进行了一天的折射/固定测试…)这是我应该想到的答案!事实上,在这个想法上,有没有关于如何将IRepository深入到实体层的建议?最不显眼的是传递它
theEntity.GetMatter(存储库)
好主意。。!我把它完全去掉了,把与客户机有关的任何事情都保留在一个客户机服务类中——因为它需要额外的查询才能得到它。当需要从DTO返回DTO时,我还添加了DTO,因此无论如何都不能通过主对象访问DTO。。(刚刚做了一天的折射/固定测试…)谢谢你-我以后会记住它-但是,我会坚持使用所有的再反射和DTO(无论如何都会发生!)+1谢谢-我以后会记住它-但是,我会坚持所有的再反射和DTO(无论如何都会发生!)+1