3

セットアップはかなり標準的です。SQL Server 接続文字列を使用して、ビューとリポジトリも作成しました。リポジトリにビュー モデルを渡し、ビュー モデルのコンストラクターでリポジトリからコレクションを呼び出します。async/await コンボを使用して非同期に実行しようとするまではすべて正常に機能していましたが、リポジトリのコレクションを呼び出すときに「モデルの作成中はコンテキストを使用できません」というエラーが表示されます。

古い作業コード:

void FillPeopleList()
{
  PeopleList = _repository.GetPeople();
}

新しい壊れたコード:

async void FillPeopleList()
{
  await Task.Run(()=>
  {
    PeopleList = _repository.GetPeople(); // Error
  });
}
4

1 に答える 1

10

EF はスレッドセーフではありません。

複数のスレッドで同じコンテキストを使用することはできません。

于 2012-05-03T17:51:38.503 に答える