使用动态数据库 Linq to Sql

Linq to Sql with dynamic database

我现在正在创建一个在运行时创建数据库的应用程序。

例如:用户 'A' 注册到我的服务器将提供一个数据库 A.sdf

之后,我想使用 Linq-to-SQL 创建到新创建的数据库文件的连接。

我想知道我是否会在 Visual Studio 的设计过程中创建该连接,table 是否会显示为数据库上下文的 classes?

例如:A.sdf 有一个 table Inventory 包含这些列:

因此在 Visual Studio 中,将有一个名为 Inventory 的 class 具有 2 个属性。

谁能告诉我如何做到这一点?

互联网上有很多网站提供有关 how to generate your Linq to SQL classes from a database 的信息。

在开发过程中,您需要将其配置为使用与某种主数据库的连接,并根据您的需要设计表。

在运行时,您可以change your connection string that is used to construct your data context这样您就可以使用位于其他地方的数据库文件。

如果您使用 Entity Framework 并且您的数据库在结构上是相同的,您可以使用相同的域模型 (EF 类) 来处理所有数据库。您所需要做的就是使用不同的连接字符串创建数据上下文。例如:

public class DataBaseContext : DbContext {
    public DataBaseContext (string connectionString="defaultConStrInConfig") : base(connectionString) {}
    /* some code to bind tables etc */
}

在你的方法中:

if (userA) conStr = "<connection string for userA>";
using (var context = new DataBaseContext(conStr)){
   /* work with userA's database */
}