私はこれらをすべて読んでいるので、あまり役に立たないので、これらのエラーメッセージがたくさんあることは知っています。EF6 DbContextが破棄されたため、操作を完了できません
私は、SQL Server DBからEF6経由で「Persons」のセットを取得しているWebApiコントローラを持っています。非常に簡単な例私がこれまで試した
物事が、成功しません: - プロキシ生成 を無効にする - 遅延ロード を無効にする - 追加LINQと文字列の両方のパラメータを持つ子供、参考文献を取得するには含まれています。 - usingをtry/finally - > DbContextを破棄して置き換えます。
: - WebApiConfig を経由してサポートされているメディアの種類から、「アプリケーション/ XML」を削除 - - 確保循環依存関係は[IgnoreDataMember] に起因している...続き私は覚えていないことができます:)をここでは、PersonController取得方法であり、
public IEnumerable<Person> Get()
{
try
{
IEnumerable<Person> persons = null;
using (PersonContext entities = new PersonContext())
{
entities.Configuration.ProxyCreationEnabled = false;
entities.Configuration.LazyLoadingEnabled = false;
persons = entities.Persons.Take(5);
}
return persons;
}
catch(Exception ex)
{
...
}
}
コントローラのANYポイントで例外がスローされることはありません。例外は、しかし、ブラウザに表示されます。
"<Error><Message>An error has occurred.<\Message>
<ExceptionMessage>The 'ObjectContent`1' type failed to serialize the response body for content type 'application\/json; charset=utf-8'.
<\ExceptionMessage>
<ExceptionType>System.InvalidOperationException<\ExceptionType>
<StackTrace/>
<InnerException>
<Message>An error has occurred.<\/Message>
<ExceptionMessage>**The operation cannot be completed because the DbContext has been disposed.**<\/ExceptionMessage>
<ExceptionType>System.InvalidOperationException<\/ExceptionType>
<StackTrace> at
System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
エラーが何か他のものを使用して句がポップされた後、コンテキストを読み込むしようとしているが、私はそれが何ができるかを知るために途方に暮れてよと言われますか?ご覧のとおり、コンテキストから列挙されたデータをローカルリストにコピーしてから返します。私は詰まった!
感謝の意を表します。
この行の末尾に '.ToList()'を追加してください。 'persons = entities.Persons.Take(5)'と何が起こるかを見てください。 –
確かに。 'IEnumerable <> 'は遅延実行を意味します。この一見無関係な[質問](http://stackoverflow.com/q/36828822/60761)も同じ問題を扱っています。 –