我有一个Web API,它被设定与使用默认VS15模板和“defaultconnection”连接字符串asp.net身份。我在解决方案中添加了一个类库,并且在我的数据库中添加了一个实体框架ado.net模型。我在类库的app.config文件中添加了一个连接字符串到我的web配置中。在API的Web API具有独立的实体框架数据层
Web.config文件的连接字符串:
<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>
对于测试我想从我的API的控制器做用户信息的GET请求:
[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在自己的项目,并从我的API,使用defaultconnection验证参考呢?
我的猜测是您的使用迟缓装载,所以从使用阻断包裹上下文内返回时被设置前的延迟加载属性被取出。检查[这](http://stackoverflow.com/questions/18398356/how-to-solve-the-error-the-objectcontext-instance-has-been-disposed-and-can-no-l)。也许是这样。 –
默认情况下,实体框架使用延迟加载,除非通过禁用它来指定。 – Greg