私はMyFilterと組み合わせてEFを使用してASP.net MVCプロジェクトを作成しています。今はこれだけでうまく動作しますが、SQLでEFを使用する別のクラスライブラリを参照したいこともあります。同じプロジェクト内でmysqlとsqlでEF DbContextを使用
ライブラリを参照すると、各DbContextにどのプロバイダを使用するかについてEFが混乱するようです。私はこのDbContextは、MySQLプロバイダによって処理されるべきであるEFを伝えるために、次の属性持っているわたしのMySQL DbContextで
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
今SQL DbContext上を、私は何の属性を持っていません。私はそこに1つを置くべきでしょうか?私はこの問題についていくつか検索しましたが、どこでも正しい答えを見つけることができませんでした。
The default DbConfiguration instance was used by the Entity Framework before the 'MySqlEFConfiguration' type was discovered. An instance of 'MySqlEFConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file.
これは、SQLコンテキストは、MySQL 1の前に使用されているが、私はこの上の修正を見つけるように見えることができないので、かなり単純です:
現在、私は次のエラーを取得します。
これを処理する上でのベストプラクティスは何でしょうか。または、同じプロジェクトで2つのDbContextを組み合わせて、これを回避する必要があるものです。
ありがとうございました!
のMySQL DbContext
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MySqlContext : DbContext
{
public MySqlContext() : base("name=MySqlContext")
{
this.Configuration.LazyLoadingEnabled = false;
}
//DbSets....
}
SQL DbContext
public class SqlContext : DbContext
{
public SqlContext() : base("name=SqlContext")
{
Configuration.LazyLoadingEnabled = false;
}
//DbSets....
}
のWeb.config:
<connectionStrings>
<add name="SqlContext" connectionString="some connectionString" providerName="System.Data.SqlClient" />
<add name="MysqlContext" connectionString="some connectionString" 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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
<system.data>
<DbProviderFactories>
<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=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
私が見O n DbProviderFactoriesはその唯一のMysqlです。
でのConnectionStringとのAppConfigの例。 web.configを投稿できますか? –
これはあなたを助けるかもしれません:http://stackoverflow.com/questions/24766068/entityframework-two-different-providers-on-the-same-config-file –
私はすぐにテストする環境がありません。これをSqlContextの上に置いてみてください。 '[DbConfigurationType(typeof(System.Data.Entity.DbConfiguration))]' –