代码之家  ›  专栏  ›  技术社区  ›  Kasper Holdum

访问平等数据库的接口

  •  0
  • Kasper Holdum  · 技术社区  · 14 年前

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

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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Murph    14 年前

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

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

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