【发布时间】:2013-11-21 09:58:16
【问题描述】:
我正在研究 MVC3 应用程序数据库优先方法。我想使用一个连接字符串连接到数据库,基于一些字符串(公司名称)。示例:我在我的 MSSQL Express 2012 中有这个数据库:my_database_microsoft、my_database_oracle 等等..(这些数据库具有相同的结构)。在登录页面上,我有 3 个输入字段:用户名、密码、公司。我知道如何使用 SqlConnectionStringBuilder 动态构建连接字符串,然后在 EntityConnectionStringBuilder 上使用它
string providerName = "System.Data.SqlClient";
string serverName = "MY-PC\\SQL2012";
string databaseName = "my_database_"+form[company].toString();
.....
.....
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata =@"res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl";
using (EntityConnection conn =
new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
// Console.WriteLine("Just testing the connection.");
conn.Close();
}
obracun_placEntities1.nameOrConnectionString = entityBuilder.ToString();
obracun_placEntities1 o = new obracun_placEntities1(entityBuilder.ToString());
我已经为我的实体创建了一个部分类,并提供了一个以 nameOrConnectionString 字符串作为参数的构造函数。
public partial class obracun_placEntities1
{
public string nameOrConnectionString { get; set; }
public obracun_placEntities1(string nameOrConnectionString)
: base(nameOrConnectionString ?? "obracun_placEntities1") { }
}
这仅在 loginController 中有效,但我如何在 UsersController 和我使用 obracun_placEntities1 的所有其他控制器中使用它 db = new obracun_placEntities1(); > 这从 web.config 中获取默认数据库。我不想将连接字符串保存到会话或 cookie 中,而不是将其作为参数传递给每个控制器。
private obracun_placEntities1 db = new obracun_placEntities1();
如何实现在登录控制器中传递连接字符串并在整个项目中使用此数据库。
当我想使用公共静态字符串 nameOrConnectionString 时又出现了一个问题 并将其传递给构造函数。问题是当我在 Chrome 中打开应用程序并以 user1 身份登录时,我从 user1 数据库中获取所有信息,但随后我以 user2 身份登录 MS Explorere 并从 user2 数据库中获取所有数据。当我刷新 chrome 时,我从 user2 数据库而不是 user1 获取信息。
Model1.context.cs
public partial class obracun_placEntities1 : DbContext
{
public static string nameOrConnectionString { get; set; }
// public static string connection;
public obracun_placEntities1()
: base(nameOrConnectionString ?? "obracun_placEntities1")
{
}
【问题讨论】:
-
所以你有一些答案,但没有反馈 lozo
标签: sql-server asp.net-mvc-3 entity-framework