我正在开发一个网络服务。
这项服务背后有两种方法: 一个用于从MySQL连接获取实体,另一个用于从MSSQL服务器连接获取实体。
我有两个连接字符串。
我想有两个背景,它们是完全分开的。
但我无法解决这个问题。
有什么想法吗?
答案 0 :(得分:4)
最终解决方案很简单。
请务必在所有目标系统上安装MySql Connector/Net! 我在目标平台上错过了这个。
web.config / app.config:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="MsSqlServerContext" connectionString="MSSQLCONNECTIONSTRING" providerName="System.Data.SqlClient" />
<add name="MySqlServerContext" connectionString="MYSQLCONNECTIONSTRING" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
</configuration>
MsSqlServerContext.cs
public partial class MsSqlServerContext : DbContext
{
public MsSqlServerContext()
: base("name=MsSqlServerContext")
{
Database.SetInitializer<MsSqlServerContext>(null);
}
// Add DbSets here
public DbSet<ClassName1> SomeName1 { get; set; }
public DbSet<ClassName2> SomeName2 { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Add Mappings here
modelBuilder.Configurations.Add(new ClassName1Map());
modelBuilder.Configurations.Add(new ClassName2Map());
}
}
MySqlServerContext
public partial class MySqlServerContext : DbContext
{
public MySqlServerContext()
: base("name=MySqlServerContext")
{
Database.SetInitializer<MySqlServerContext>(null);
}
public DbSet<ClassName3> SomeName3 { get; set; }
public DbSet<ClassName4> SomeName4 { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ClassName3Map());
modelBuilder.Configurations.Add(new ClassName4Map());
}
}