用于访问等同数据库的接口

时间:2010-07-22 12:15:41

标签: c# .net database linq-to-sql

我有几个数据库包含完全相同的基表,设计相同。现在我需要能够从这些数据库中的任何一个访问基表。

有没有办法创建一个仍然可以利用Linq2Sql功能的通用接口?我以为我会有一个工厂为我选择的数据库创建一个数据上下文,然后我可以查询:

string university = "SomeUniversity";
var database = UniversityDataContextFactory.Get(university);
var user = database.Users.Where(u => u.Id== id).First();

但是,这需要从各个数据库返回的数据上下文实现共享接口,并且很可能还要共享数据类。

1 个答案:

答案 0 :(得分:0)

如果数据库模式相同,那么您只需要一组数据类 - 一个“数据上下文”与另一个“数据上下文”之间的唯一区别是连接字符串。

这是事情变得更有趣的地方。如果您正在显式创建数据上下文 - 如在工厂示例中那么 - 只要您有提供/创建适当连接sting的方法就没有问题,因为有一个数据上下文的构造函数,它将连接字符串作为一个参数。但是,如果你隐式创建一个(在动态数据之类的东西),那么我不确定你需要做什么(我已经在每个应用程序实例的基础上处理了这个问题,而不是在单一申请)。

要记住的关键是.config中的数据连接字符串是默认值,但不一定是可以与数据上下文一起使用的唯一连接字符串。