Linq to Sql 与动态数据库

Posted

技术标签:

【中文标题】Linq to Sql 与动态数据库【英文标题】:Linq to Sql with dynamic database 【发布时间】:2015-06-16 04:51:56 【问题描述】:

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

例如:注册到我的服务器的用户“A”将获得一个数据库A.sdf

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

我想知道我是否会在 Visual Studio 中设计期间创建该连接,这些表是否会显示为数据库上下文类?

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

身份证 姓名

所以在 Visual Studio 中,会有一个名为 Inventory 的类,它有 2 个属性。

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

【问题讨论】:

【参考方案1】:

如果您使用实体框架并且您的数据库在结构上是相同的,您可以使用相同的域模型(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 */

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于Linq to Sql 与动态数据库的主要内容,如果未能解决你的问题,请参考以下文章

linq-to-sql 是不是处理动态查询?

Linq To Sql进阶系列用object的动态查询与保存log篇

自定义 Linq-to-SQL 映射源

Linq to sql 动态查询

如何在 LINQ SQL C# 中返回动态周数?

在 ASP.NET MVC 中向控制器传递多个参数;此外,在 LINQ-to-SQL 中生成动态查询