使用 NHibernate 跨多个数据库填充对象

发布于 2024-10-10 10:48:21 字数 228 浏览 1 评论 0原文

我有一个带有多个数据库的 SQL Server。 Database1 有一个表,其中引用了存储在 Database2 上的表中的 ID。不确定是否可能,但是我可以配置 NHibernate(特别是 Fluent NHibernate)来使从多个数据库提取数据的对象饱和吗?

我不关心写入这些表,我只是尝试对对象进行 ORM 以在数据查看应用程序中显示。

我意识到这不是理想的数据库情况,但这是我需要处理的情况。

I have one SQL Server with multiple databases. Database1 has a table with a reference to IDs that are stored in a table on Database2. Not sure if it's possible, but could I configure NHibernate (Fluent NHibernate specifically) to saturate an object pulling data from multiple databases?

I'm not concerned about writing to these tables, I'm just trying to ORM the objects to display in an data viewing application.

I realize this isn't an ideal database situation, but it's what I was given to work with.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别在捏我脸啦 2024-10-17 10:48:21

对于特定于数据库的查询结构(例如跨数据库查询),通常的答案是在“本地”数据库(NH 连接到的)上创建一个视图,该视图将执行跨数据库查询并返回联接结果。您还可以拥有每个数据库一个存储库,并开发一些方法来查询每个数据库的记录并手动连接它们。

一件事也能起作用;每个映射的表属性只是一个字符串,可以是任何内容; NHibernate 只是将其插入到需要引用表名的地方。因此,您可以尝试使用完全限定名称指定映射中的表:ConnectedDB..LocalTable、OtherDB..RemoteTable。它可能被认为是一种 hack,但在某种程度上它也相当优雅;您的程序甚至不必知道持久性模式中有多个数据库。

The usual answer to db-specific query structures, like cross-DB queries, is to create a view on the "local" DB (that NH connects to) that will perform the cross-DB query and return the joined results. You can also have a repository-per-DB and develop some means to query the records from each DB and join them manually.

One thing that will also work; the table property of each mapping is just a string, and could be anything; NHibernate just takes that and plugs it in wherever it needs to reference the table name. So, you could try specifying the tables in the mappings using their fully-qualified names: ConnectedDB..LocalTable, OtherDB..RemoteTable. It might be considered a hack, but it's also rather elegant in a way; your program doesn't even have to know there are multiple databases in the persistence schema.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文