gpt4 book ai didi

c# - 跨多个数据库的 DataContext

转载 作者:行者123 更新时间:2023-11-30 22:48:06 24 4
gpt4 key购买 nike

我有一个应用程序需要将来自多个数据库的表连接到单个 LINQ-to-SQL 查询中。不幸的是,我为每个数据库设置了一个单独的 DataContext 类,因此该查询将不起作用。我收到这样的错误:“查询包含对在不同数据上下文中定义的项目的引用”

理想的解决方案似乎是为所有三个数据库创建一个单一的 DataContext。它们都存在于同一台服务器上,因此它们可以使用相同的连接字符串。我目前使用运行 sqlmetal.exe 的脚本来生成我的 DBML 和 CS 文件,这意味着我不需要在更改数据模型时手动编辑任何文件。我想保持这种自动化水平,但 sqlmetal.exe 似乎只支持每个 DBML 文件一个数据库。

用 sqlmetal 或其他工具可以吗?或者,我是否需要考虑其他解决方案,例如为整个应用程序使用单个数据库?

这是我正在使用的批处理文件脚本:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseOne /views /functions /sprocs /dbml:DatabaseOne.dbml /namespace:Model.Domain.DatabaseOne /context:DatabaseOneDataContext /pluralize
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseOne /views /functions /sprocs /code:DatabaseOne.designer.cs /language:C# /namespace:Model.Domain.DatabaseOne /context:DatabaseOneDataContext /pluralize

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseTwo /views /functions /sprocs /dbml:DatabaseTwo.dbml /namespace:Model.Domain.DatabaseTwo /context:DatabaseTwoDataContext /pluralize
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseTwo /views /functions /sprocs /code:DatabaseTwo.designer.cs /language:C# /namespace:Model.Domain.DatabaseTwo /context:DatabaseTwoDataContext /pluralize

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseThree /views /functions /sprocs /dbml:DatabaseThree.dbml /namespace:Model.Domain.DatabaseThree /context:DatabaseThreeDataContext /pluralize
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SqlMetal.exe" /server:MYSERVER /database:DatabaseThree /views /functions /sprocs /code:DatabaseThree.designer.cs /language:C# /namespace:Model.Domain.DatabaseThree /context:DatabaseThreeDataContext /pluralize

最佳答案

一位同事找到了 a thread on another site [social.msdn.microsoft.com] 讨论了同样的问题。一个讨论的解决方案是在“主”数据库中的 View 中执行所有连接,并将这些 View 作为对象公开在应用程序中。这可能适用于我的情况,因为我的大部分数据都在一个数据库中,而其他数据库中的少量表是只读的。

关于c# - 跨多个数据库的 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com