首页 新闻 会员 周边

EntityFramework

0
[已解决问题] 解决于 2012-03-28 14:15

下面是一个Get请求:

$("#productName").change(function () {
$.getJSON("/Deliveryorder/GetInventory/", { productNameid: $("#productName").val() }, function (result) {
if (result != 0) {
$(result).each(function () {
$("#textcount").keyup(function () {
var count = $("#textcount").attr("value");
if (count > result) {
alert("数量不足");
}
});
$("#Iy").val(result);
});
}
else {
$("#textcount").keyup(function () {
var count = $("#textcount").attr("value");
if (count > result) {
alert("数量不足");
}
});
$("#Iy").val(0);
}
});
});

在调试的时候在控制器中能够接收到id的值

  //根据货品的ID查询货品的库存数量
public JsonResult GetInventory(int productNameid)
{
var inventory = _inventoryRepository.Get(x => x.Product.ID == productNameid);
if(inventory!=null)
{
return Json(inventory.Count, JsonRequestBehavior.AllowGet);
}
return Json(0,JsonRequestBehavior.AllowGet);
}

 但是数据不显示每次都运行到Get方法的时候断掉了,也就是这里有异常。然后我再浏览器里面敲/Deliveryorder/GetInventory?productNameid=1。就会有详细的错误信息:

               应用程序中的服务器错误

已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
源错误: 


行 128: public JsonResult GetInventory(int productNameid)
行 129: {
行 130: var inventory = _inventoryRepository.Get(x => x.Product.ID == productNameid);
行 131: if(inventory!=null)
行 132: {

可是我反复查看都没有问题啊。哪位大哥告诉我错误啊,或者有没有更好的差错方法能让错误更具体点。

问题补充:

问题时用Repository模式是,访问数据时出现:

 var inventory = _inventoryRepository.GetMany(x => x.Product.ID == productNameid);

已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。

的错误 

 

我用的是网上的Repository模式:

下面是Repository的类中的两个代码

public virtual IEnumerable<T> GetMany(Func<T, bool> where)
{
return dbset.Where(where).ToList();
}

public T Get(Func<T, Boolean> where)
{

return dbset.Where(where).FirstOrDefault<T>();
}
凡一二三的主页 凡一二三 | 初学一级 | 园豆:85
提问于:2012-03-28 13:31
< >
分享
最佳答案
1
奖励园豆:5
凡一二三 | 初学一级 |园豆:85 | 2012-03-28 14:14
其他回答(2)
0
DataReader 使用前,必須是關閉的,使用后,也要關閉。
無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-28 13:42

但是在MVC中使用Ef和Repository之后,我压根没用用到一个DataReader对象。

支持(0) 反对(0) 凡一二三 | 园豆:85 (初学一级) | 2012-03-28 13:43
0

问题出在 _inventoryRepository.Get 的实现代码中,需要提供这部分代码,别人才能回答这个问题。

dudu | 园豆:31007 (高人七级) | 2012-03-28 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册