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 与动态数据库的主要内容,如果未能解决你的问题,请参考以下文章