Entity Framework是否支持多个数据库?我的解决方案中有两个数据库MySQL
和SQL Server
。如果我一次运行一个,它正在工作,但两个同时都不工作。这是代码。在实体框架web config
我需要为mysql添加另一个设置,但是如何?
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
</entityFramework>
答案 0 :(得分:0)
创建一个包含3个项目的解决方案: MsSQLContext MySQLContext BusinessLogic
MsSQLContext项目
安装EF并在MySQL documentation之后设置连接字符串。
<connectionStrings>
<clear />
<add name="MySqlContext" providerName="MySql.Data.MySqlClient"
connectionString="server=localhost;port=3306;database=mycontext;uid=root;password=********"/>
</connectionStrings>
添加一个类并为其指定一个有意义的名称。
public class MyBusinessContextWithMySQL : DbContext
{
public MyBusinessContextWithMySQL() : base("name=MySqlContext")
{
this.DisableLazyLoad();
}
// Add your entities and mappings here
}
MySQLContext项目
安装EF并为Ms SQL设置默认提供的连接字符串。给它一个名字,你会得到类似下面的东西:
<connectionStrings>
<clear />
<add name="MSSQLContext" connectionString="...valid conn string..." />
</connectionStrings>
添加一个类并为其指定一个有意义的名称。
public class MyBusinessContextWithMSSQL : DbContext
{
public MyBusinessContextWithMSSQL() : base("name=MSSQLContext")
{
this.DisableLazyLoad();
}
// Add your entities and mappings here
}
BusinessLogic项目
安装EF并将两个连接字符串添加到app.config文件。你会这样:
<connectionStrings>
<clear />
<add name="MSSQLContext" connectionString="...valid conn string..." />
<add name="MySqlContext" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=mycontext;uid=root;password=********"/>
</connectionStrings>
创建一个包含业务逻辑的类。将上面的两个项目添加为此项目的参考。在您实现业务逻辑的类中,您可以访问下面的两个上下文(代码是我的头脑,并没有检查它是否正常)。
public class BusinessLogic{
public void SomeMethod() {
// doing stuff with data in MS SQL
using(MyBusinessContextWithMSSQL msSqlContext = new MyBusinessContextWithMSSQL()) {
// your business logic
}
// doing stuff with data in MySQL
using(MyBusinessContextWithMySQL msSqlContext = new MyBusinessContextWithMySQL()) {
// your business logic
}
}
}
这是管理两个数据库中的数据的一种方法。它有自己的成本,例如:你必须维护两组实体(我假设你在两者中都有相同的数据)。