在我的解决方案中,我有以下项目
MySystem.Core
MySystem.Core.Data
MySystem.MyAudit1.Core
MySystem.MyAudit1.Core.Data
MySystem.MyAudit2.Core
MySystem.MyAudit2.Core.Data审计项目的数量可能会增加到20个左右。
审计项目都需要一个“组织”参考数据表。我的计划是在核心项目中有一个“主”组织表,而不是在所有审计项目中重复相同的参考数据表20次,并试图保持它们的同步。
这将包含所有组织的代码和描述。然后,在每个特定的审计项目中都有一个OrganisationCode表,该表只包含与该审计相关的Org代码,而不包含描述,并且在审计数据库中有一个视图,该视图从核心Org表中查找描述如下:
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这将意味着,如果Org描述发生变化,它们可以在一个地方更新,并在所有审计中反映出来。
但是,由于您不能在SQL中的视图上拥有外键,所以我在OrganisationCode表和审计数据库中的任何其他表之间创建了一个外键。
正如我所发现的那样,这当然会导致NHibernate尝试并返回OrganisationCode table ,而不是组织视图,并且在Nhibernate正在OrganisationCode表中寻找OrganisationId时,导致SessionFactory创建失败。
是否有一种简单的方法可以让我在核心项目中进行单一的描述查找,以获得可以跨子项目使用的引用数据?
发布于 2012-02-23 11:59:04
是的,审计表分散在单独的dbs上,但我已经找到了问题的路径。
我的SessionFactory创建失败的原因是,正在传递用于映射的审计数据程序集,而我的组织映射文件位于核心数据程序集中。
现在我已经解决了,通过在我的审计数据程序集中添加一个组织映射文件,我的信任对象将从组织视图返回描述值。
谢谢你找我。
https://stackoverflow.com/questions/9399034
复制相似问题