Sql server 实体框架:具有相同架构的多个数据库
我刚刚创建了一个ASP.NETMVC4和WebAPI项目。之后,我将Sql server 实体框架:具有相同架构的多个数据库,sql-server,entity-framework,asp.net-web-api,dbcontext,multiple-databases,Sql Server,Entity Framework,Asp.net Web Api,Dbcontext,Multiple Databases,我刚刚创建了一个ASP.NETMVC4和WebAPI项目。之后,我将.edmx数据源添加到项目中 我有多个具有相同模式的数据库。动态地,我想使用EF中提供的默认构造函数替换连接字符串 但在Model1.Designer.cs中,每当我收到类似“已声明具有相同签名的成员”这样的错误时 我无法解决这个问题 是的,它有效!您只需要更改连接字符串 为了满足我自己的好奇心,我刚刚对它进行了测试 以下是我采取的步骤: 获取现有数据库并为其创建模型 创建一个新的空数据库 在SQL Management S
.edmx
数据源添加到项目中
我有多个具有相同模式的数据库。动态地,我想使用EF中提供的默认构造函数替换连接字符串
但在Model1.Designer.cs
中,每当我收到类似“已声明具有相同签名的成员”这样的错误时
我无法解决这个问题 是的,它有效!您只需要更改连接字符串 为了满足我自己的好奇心,我刚刚对它进行了测试 以下是我采取的步骤:
TMS_MiscEntities db = new TMS_MiscEntities();
TMS_MiscEntities dbCopy = new TMS_MiscEntities();
dbCopy.Database.Connection.ConnectionString = db.Database.Connection.ConnectionString.Replace("initial catalog=TMS_Misc", "initial catalog=TMS_Misc_new");
Response.Write(string.Format("DB 1 records: {0}<br/>", db.ZipCodes.Count()));
Response.Write(string.Format("DB 2 records: {0}<br/>", dbCopy.ZipCodes.Count()));
<add name="TMS_MiscEntities" connectionString="metadata=res://*/DbModel.csdl|res://*/DbModel.ssdl|res://*/DbModel.msl;provider=System.Data.SqlClient;provider connection string="data source=ws2008;initial catalog=TMS_Misc;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我正在使用实体框架6.1.3。我已经向DbContext添加了一个构造函数,该构造函数接受一个字符串参数。此字符串可以是存储在App.config中的连接名称,也可以是完整连接字符串。大概是这样的:
public partial class MyDBContext : DbContext
{
public MyDBContext(string connectionString)
: base(connectionString)
{
}
// DbSets, OnModelCreating, etc
}
在我的例子中,我管理一个多租户应用程序,并使用ContextFactory构建正确的连接字符串并返回初始化的上下文
public class ContextFactory
{
public MyDbContext GetContext()
{
string connectionString;
// do some stuff here
return new MyDbContext(connectionString);
}
}
VS不会生成一个包含字符串参数的构造函数的上下文吗?明天我肯定会测试它。如果它不起作用,我会让你知道我的情况。。。。谢谢你的回复。不工作。我用的是EF6。dbCopy.Database.Connection.ConnectionString。。。。。我无法解析。数据库。它显示了错误。什么错误?另外,您确定数据库模式实际上是相同的吗?你能试着将现有数据库导出到新创建的数据库吗?我明白了。该错误似乎与使用多个数据库无关。只是EF。
public class ContextFactory
{
public MyDbContext GetContext()
{
string connectionString;
// do some stuff here
return new MyDbContext(connectionString);
}
}