デフォルトのVS15テンプレートと "defaultconnection"接続文字列を使用しているasp.net IDで設定されたWeb APIがあります。私はこのソリューションにクラスライブラリを追加しました。その上で私のデータベースからエンティティフレームワークado.netモデルを追加しました。クラスライブラリのapp.configファイルにある接続文字列をWeb設定に追加しました。 APIの別のエンティティフレームワークデータレイヤを持つWeb API
のWeb.config接続文字列:私は私のAPIのコントローラーからユーザー情報のためのGET要求をやろうとしているテストのために
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=MyDatabase;Initial Catalog=Dev;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="IBPC_DevEntities" connectionString="metadata=res://*/IBPCDataModel.csdl|res://*/IBPCDataModel.ssdl|res://*/IBPCDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MyDatabase;initial catalog=Dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
:
[Authorize]
public HttpResponseMessage Get(int id)
{
using (IBPC_DevEntities entity = new IBPC_DevEntities())
{
return Request.CreateResponse(HttpStatusCode.OK,
entity.User.FirstOrDefault(u => u.NDBHUserID == id));
}
}
私が送りますPostmanのリクエスト(認証トークン付き)InnerExceptionで応答します。「ObjectContextインスタンスが破棄され、接続を必要とする操作には使用できなくなりました。
データベースの最初のEF6を独自のプロジェクトで使用し、defaultconnectionを使用して認証するAPIから参照するにはどうすればよいですか?
私の推測では、遅延読み込みを使用しているので、使用ブロック内から戻ったときに、遅延ロードされたプロパティがフェッチされる前に、ラップされたコンテキストが破棄されています。 [this](http://stackoverflow.com/questions/18398356/how-to-solve-the-error-the-objectcontext-instance-has-been-disposed-and-can-no-l)をチェックしてください。たぶん、これが事実です。 –
デフォルトでは、Entity Frameworkは、特に指定しない限り、Lazy Loadingを使用します。 – Greg