使用动态数据库 Linq to Sql
Linq to Sql with dynamic database
我现在正在创建一个在运行时创建数据库的应用程序。
例如:用户 'A' 注册到我的服务器将提供一个数据库 A.sdf
。
之后,我想使用 Linq-to-SQL 创建到新创建的数据库文件的连接。
我想知道我是否会在 Visual Studio 的设计过程中创建该连接,table 是否会显示为数据库上下文的 classes?
例如:A.sdf
有一个 table Inventory
包含这些列:
- ID
- 姓名
因此在 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 */
}
我现在正在创建一个在运行时创建数据库的应用程序。
例如:用户 'A' 注册到我的服务器将提供一个数据库 A.sdf
。
之后,我想使用 Linq-to-SQL 创建到新创建的数据库文件的连接。
我想知道我是否会在 Visual Studio 的设计过程中创建该连接,table 是否会显示为数据库上下文的 classes?
例如:A.sdf
有一个 table Inventory
包含这些列:
- ID
- 姓名
因此在 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 */
}