Sql server 2008 使用NHibernate和外键映射SQL视图
在我的解决方案中,我有以下项目Sql server 2008 使用NHibernate和外键映射SQL视图,sql-server-2008,nhibernate,nhibernate-mapping,Sql Server 2008,Nhibernate,Nhibernate Mapping,在我的解决方案中,我有以下项目 MySystem.Core MySystem.Core.Data MySystem.MyAudit1.Core MySystem.MyAudit1.Core.Data MySystem.MyAudit2.Core MySystem.MyAudit2.Core.Data 审计项目的数量可能会增长到20个左右 审计项目都需要“组织”参考数据表。我的计划是在核心项目中建立一个“主”组织表,而不是在所有审计项目中重复相同的参考数据表20次,并试图保持它们的同步 这将
MySystem.Core
MySystem.Core.Data
MySystem.MyAudit1.Core
MySystem.MyAudit1.Core.Data
MySystem.MyAudit2.Core
MySystem.MyAudit2.Core.Data
审计项目的数量可能会增长到20个左右
审计项目都需要“组织”参考数据表。我的计划是在核心项目中建立一个“主”组织表,而不是在所有审计项目中重复相同的参考数据表20次,并试图保持它们的同步
这将包含所有组织的代码和说明。然后,在每个特定的审计项目中,都有一个OrganizationCode表,该表只包含与该审计相关的组织代码,而不包含描述,并且在审计数据库中有一个视图,该视图从核心组织表中查找描述,如下所示:
CREATE VIEW Organisation AS
SELECT d.OrganisationCodeId as 'OrganisationId', d.Code, a.[Description]
FROM MyAudit1.dbo.OrganisationCode d
INNER JOIN [Core].dbo.OrganisationCode a ON d.Code = a.Code
这意味着,如果组织描述发生变化,它们可以在一个地方更新,并反映在所有审计中
但是,由于SQL中的视图上不能有外键,所以我在OrganizationCode表和审计数据库中需要它们的任何其他表之间创建了一个外键
正如我所发现的,这当然会导致NHibernate尝试返回OrganizationCode表,而不是Organization视图,并导致我的SessionFactory创建失败,因为NHibernate正在OrganizationCode表中查找OrganizationID
有没有一种简单的方法可以让我在核心项目中进行单一描述查找,以获得可在子项目中使用的参考数据是的,审计表分布在不同的数据库中,但我已经找到了问题的根源 我的SessionFactory创建失败的原因是配置正在传递给审核数据程序集进行映射,而我的组织映射文件位于核心数据程序集中 现在我已经解决了这个问题,通过在审计数据集合中添加组织映射文件,我的信任对象将从组织视图返回描述值
谢谢查看。审核表是否分布在多个数据库中?