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 關注
- 194 瀏覽
添加回答
舉報