2010-07-22 87 views
0

我有几个数据库包含完全相同的基表完全相同的设计。现在我需要能够从任何一个数据库访问基表。访问平等数据库的接口

有什么办法可以创建一个仍然可以使用Linq2Sql的通用界面?我在想,我想有一个工厂,创造了该选择的数据库,我可以事后查询数据方面:

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

然而,这将需要从各个数据库返回的数据上下文来实现共享接口并且很可能也共享数据类。

+0

你会使用Linq2Sql更新表中的数据吗? – 2010-07-22 14:07:51

+0

是的,我会的。我会像其他地方一样使用Linq。 – 2010-07-29 12:48:38

回答

0

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

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

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