3 回答
TA贡献1853条经验 获得超18个赞
在微软的帮助下,我终于弄清楚了。希望这对其他人有帮助。我必须创建自己的类继承自 DbConfiguration
public class MyCustomSQLDbConfiguration : DbConfiguration
{
public MyCustomSQLDbConfiguration()
{
SetExecutionStrategy("MySql.Data.MySqlClient", () => new MySqlExecutionStrategy());
SetDefaultConnectionFactory(new LocalDbConnectionFactory("mssqllocaldb"));
}
}
然后相应地装饰我的 MySqlDBContext:
[DbConfigurationType(typeof(MyCustomSQLDbConfiguration))]
public class MySqlDBContext : DbContext
{
public MySqlDBContext() : base("MySqlDBContext")
{
}
}
最后(也是重要的),在运行应用程序时显式设置它。对于控制台应用程序,在 Program.Main 的开头,或者在 Web 应用程序中,在 Application_Start 上:
DbConfiguration.SetConfiguration(new MyCustomSQLDbConfiguration());
TA贡献1834条经验 获得超8个赞
自定义 DbConfiguration 也对我有用。或者,我看到它使用 DbContext 和 DbConnection 构造函数成功运行,而不使用任何 DbConfiguration 属性。
using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MssqlConnectionString"].ConnectionString))
using (var mssqlDbContext = new MSSQLDbContext(sqlConnection, true))
{
//...
}
using (var mySqlConnection = new MySqlConnection(ConfigurationManager.ConnectionStrings["MysqlConnectionString"].ConnectionString))
using (var mySQLDbContext = new MySQLDbContext(mySqlConnection, true))
{
//...
}
配置中的system.data部分如下。
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.24.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
我可以看到从两个数据上下文(MSSQL Compact 和 MySQL)检索的结果。
TA贡献1784条经验 获得超8个赞
您可以使用部分类:
public partial class MySqlDBContext : DbContext
{
public MySqlDBContext(string FirstSQLServerDBContext)
: base(configmanager.connectionstrings(FirstSQLServerDBContext)...)
{
}
- 3 回答
- 0 关注
- 134 浏览
添加回答
举报