.Net - 访问多个 sql server 组/数据库

Posted

技术标签:

【中文标题】.Net - 访问多个 sql server 组/数据库【英文标题】:.Net - accessing multiple sql server groups / databases 【发布时间】:2011-04-03 17:27:20 【问题描述】:

我的程序(用 C# 编写的 WCF 服务)必须访问多个 sql server 组和这些组中的数据库(sql server)。看起来 linq 2 sql 肯定不支持这一点,除非我为每个数据库创建多个数据类,而且看起来实体框架在同一条船上。

您将如何设置必须访问多个未链接的 sql server 组的应用程序?

我想我可以只使用 SqlConnection 和 SqlCommand 并创建一些类来处理它。如果我走这条路,我将如何用查询结果填充我的模型类? (我不想用数据表,而是List<T>

I.E.

Server1
 - database 1
 - database 2
Server2
 - database 3
 - database 4

我的程序必须访问数据库 1 和数据库 4,它们没有链接/不会链接。

【问题讨论】:

【参考方案1】:

您可以使用 EF 或 LinqToSql 访问每个数据库。您的服务将像经纪人一样工作。它将从不同的数据库中收集结果并构建具有完整数据的 DTO。

编辑:

如果您有同名的 SP,您可以重复使用单个 EF 模型。如果您有不同名称的 SP,您可以为每个数据库创建模型。实体实际上是相同的,因此您可以使用 POCO 方法(仅 EF 4.0)将实体从模型映射到您的 POCO 类。 POCO 类将被所有模型使用。

【讨论】:

这是真的,但据我了解,我必须为每个数据库创建一个新的 linq 2 sql 或 EF 文件......我试图避免这样做。我希望他们共享相同的 DTO。 这些数据库有相同的结构吗?所以你想从这些数据库中提取相同的数据? 不,数据库结构完全不同,但我想为 SP 的字段命名以适应模型对象。 IE。查询一个 db 中的地址与查询另一个 db 中的地址所查看的表不同,但是,SP 将返回相同的字段名称以填充相同的对象模型。 所以我猜你正在寻找 EF 4.0 + POCO,POCO 将被共享。检查修改后的答案。

以上是关于.Net - 访问多个 sql server 组/数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 C#.NET 中对 SQL Server 的 MS 访问

sql server 2014 alwayson 可用性组 特性

Sql Server系列:分区表操作

向 SQL Server VB.NET 数据库添加多个值

通过 ADO.NET 访问 SQL Server 消息

如何在 vb.net、SQL Server 中为多个搜索制作代码