Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql server 2008 使用NHibernate和外键映射SQL视图_Sql Server 2008_Nhibernate_Nhibernate Mapping - Fatal编程技术网

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创建失败的原因是配置正在传递给审核数据程序集进行映射,而我的组织映射文件位于核心数据程序集中

现在我已经解决了这个问题,通过在审计数据集合中添加组织映射文件,我的信任对象将从组织视图返回描述值


谢谢查看。

审核表是否分布在多个数据库中?