1 つのアプリケーションに結合する必要がある
- コンパイル前に DB から EDMX ファイルに生成されたコード
- アプリケーション自体によって実行時に生成およびコンパイルされるコード。生成されたコードは CodeFirst を使用して DB にアクセスします。
注: 1. と 2. のコードは、異なる DbContext を持ち、同じデータベースにアクセスしますが、テーブルは異なります。
タイプ 1. と 2. のインスタンスを異なるトランザクション スコープで使用している場合、すべて正常に動作するようです。しかし、それらを 1 つのトランザクション スコープで一緒に使用しようとすると、エラーが発生します (EDMX が最初に呼び出された場合)。
System.Reflection.TargetInvocationException: Exception has been thrown by the ta
rget of an invocation. ---> System.Data.ProviderIncompatibleException: An error
occurred while getting provider information from the database. This can be cause
d by Entity Framework using an incorrect connection string. Check the inner exce
ptions for details and ensure that the connection string is correct. ---> System
.Data.ProviderIncompatibleException: **The provider did not return a ProviderManif
estToken string.** ---> System.Transactions.TransactionException: **The operation is
not valid for the state of the transaction.**
とエラー (CodeFirst が最初に使用された場合)
System.Data.MetadataException: Schema specified is not valid. Errors:
(0,0) : error 0175: **The specified store provider cannot be found in the configur
ation, or is not valid.**
at System.Data.Metadata.Edm.StoreItemCollection.Loader.ThrowOnNonWarningErrors()
状況をさらに複雑にするために、これを追加する必要があります。DB がリモート サーバー上にある場合にのみ発生する動作を説明します。ローカル DB を使用している場合、すべて問題ないように見えます。私の疑惑は、分散トランザクションコーディネーターがその役割を果たすことができるということです...
主な質問: 1 つの TransactionScope で EDMX と CodeFirst を組み合わせることは可能ですか。はいの場合、どのように?
どんな助けでも大歓迎です。ミロス島