(Entity Framework を使用して) db に保存し、1 回の保存でドキュメントを SharePoint に保存するアプリがあります。TransactionScope で MSDTC を使用しようとしています。
私の EF 挿入ロジックの一部には、外部キーのリストをデータ層に渡すことが含まれます。レイヤーは、データベースから「外部キー」オブジェクトを取得し、それをプライマリ オブジェクトに追加します。奇妙なことに、これは最初の外部キーの項目では正しく機能しますが、2 番目の項目では次のメッセージで失敗します。
System.Data.EntityException: 基になるプロバイダーが Open で失敗しました。---> System.Transactions.TransactionManagerCommunicationException: 分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。
MSDTC は有効で、最初のパス スルーでは機能しますが、2 番目のパス スルーでは機能しません。複数の選択呼び出しを行っているときに、コンテキストが何らかの形で混乱していると思いますか?
ここに私の論理があります:
//Create new order
foreach(int lineItemId in lineItems)
{
//Retrieve the LineItem object from db
//Add the LineItem object to the Order
}
//Save using EF
おそらく、データベースからオブジェクトを取得するべきではありませんか? EF でリレーションシップを参照する簡単な方法がありませんか?