Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC控制器不返回JSON列表_C#_Json_Asp.net Mvc - Fatal编程技术网

C# MVC控制器不返回JSON列表

C# MVC控制器不返回JSON列表,c#,json,asp.net-mvc,C#,Json,Asp.net Mvc,我在控制器中有以下代码: public JsonResult getSmetkiList() { List<smetki> smetkiLST = new List<smetki>(); using (leskaEntities dc = new leskaEntities()) { smetkiLST = dc.smetkis.OrderBy(a => a.smID).ToList();

我在控制器中有以下代码:

  public JsonResult getSmetkiList()
  {
      List<smetki> smetkiLST = new List<smetki>();
      using (leskaEntities dc = new leskaEntities())
      {
          smetkiLST = dc.smetkis.OrderBy(a => a.smID).ToList();
      }
      return new JsonResult { Data = smetkiLST, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
  }
public JsonResult getSmetkiList()
{
List smetkiLST=新列表();
使用(leskaEntities dc=新的leskaEntities())
{
smetkiLST=dc.smetkis.OrderBy(a=>a.smID.ToList();
}
返回新的JsonResult{Data=smetkiLST,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}
如果我尝试访问列表,则会出现服务器错误500网络调试,并且在浏览器中出现以下错误:

“/”应用程序中出现服务器错误

ObjectContext实例已被释放,不能再用于需要连接的操作

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.ObjectDisposedException:ObjectContext实例已被释放,无法再用于需要连接的操作

源错误:

在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别

这是斯梅特基的课程:

  public int smID { get; set; }
        [DisplayName("Dobavuvac")]
        public int firmaID { get; set; }
    [DataType(DataType.Date), DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}"), DisplayName("Datum")]
        public DateTime datumSM { get; set; }

        [DisplayName("Beleska")]
        public string noteSM { get; set; }


        public virtual firmi firmi { get; set; }

        public virtual ICollection<trosoci> trosocis { get; set; }

        public List<trosoci> trosociL { get; set; }

        public decimal NetTotalTR
        {
            get
            {
                if (trosocis == null)
                {
                    return decimal.Zero;
                }
                return trosocis.Sum((trosoci i) => i.vkupnot);
            }
        }
public int smID{get;set;}
[显示名称(“Dobavuvac”)]
public int firmaID{get;set;}
[DataType(DataType.Date),DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:dd.MM.yyyy}”),DisplayName(“数据”)]
公共日期时间datumSM{get;set;}
[显示名称(“Beleska”)]
公共字符串noteSM{get;set;}
公共虚拟公司{get;set;}
公共虚拟ICollection trosocis{get;set;}
公共列表trosociL{get;set;}
公共十进制净值
{
得到
{
if(trosocis==null)
{
返回小数点零;
}
返回trosocis.Sum((trosoci)=>i.vkupnot);
}
}

现在我看到了您的
smetki
类,我可以说问题在于您试图返回
smetki
的集合

smetki
类有一个参考集合(如
ICollection-trosocis
)。它是一个虚拟集合,需要打开连接才能进行迭代

因此,当您的
使用
完成后,您尝试将这些引用集合序列化为json时,它仍在寻找关闭(释放)的db连接

解决方案非常简单:您只需将(Map)
smetki
类转换为没有链接集合的类(它可能被称为视图模型类)。而且,如果需要序列化所有链接的实体/集合,那么还需要为这些类创建视图模型

希望这会有所帮助


如果您还有任何问题,请随时提问。

现在我看到了您的
smetki
类,我可以说问题在于您试图返回
smetki
的集合

smetki
类有一个参考集合(如
ICollection-trosocis
)。它是一个虚拟集合,需要打开连接才能进行迭代

因此,当您的
使用
完成后,您尝试将这些引用集合序列化为json时,它仍在寻找关闭(释放)的db连接

解决方案非常简单:您只需将(Map)
smetki
类转换为没有链接集合的类(它可能被称为视图模型类)。而且,如果需要序列化所有链接的实体/集合,那么还需要为这些类创建视图模型

希望这会有所帮助


如果您还有任何问题,请随时提问。

因为我已经删除了控制器,现在我从托管项目中反编译,通过反编译,我有以下代码:

public JsonResult getSmetkiList()
        {
            List<smetki> data = new List<smetki>();
            using (leskaEntities leskaEntities = new leskaEntities())
            {
                leskaEntities.Configuration.LazyLoadingEnabled = false;
                data = (from a in leskaEntities.smetkis
                orderby a.smID
                select a).ToList<smetki>();
            }
            return new JsonResult
            {
                Data = data,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
        }
public JsonResult getSmetkiList()
{
列表数据=新列表();
使用(leskaEntities leskaEntities=新的leskaEntities())
{
leskaEntities.Configuration.LazyLoadingEnabled=false;
数据=(来自leskaEntities.smetkis中的a)
orderby a.smID
选择一个.ToList();
}
返回新的JsonResult
{
数据=数据,
JsonRequestBehavior=JsonRequestBehavior.AllowGet
};
}
使用此代码工作属性JSON结果列表

当我试图像一个有问题的代码一样重新编写时,我就犯了这个错误

以下是正确的代码:

public JsonResult getSmetkiList()
{
    List<smetki> datasm = new List<smetki>();
    using (leskaEntities dc = new leskaEntities())
    {
       dc.Configuration.LazyLoadingEnabled = false;
       datasm = dc.smetkis.OrderBy(a => a.smID).ToList();
    }
    return new JsonResult { Data = datasm, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
public JsonResult getSmetkiList()
{
List datasm=新列表();
使用(leskaEntities dc=新的leskaEntities())
{
dc.Configuration.LazyLoadingEnabled=false;
datasm=dc.smetkis.OrderBy(a=>a.smID.ToList();
}
返回新的JsonResult{Data=datasm,JsonRequestBehavior=JsonRequestBehavior.AllowGet};
}

因为我删除了控制器,现在我从托管项目中反编译,通过反编译,我得到了以下代码:

public JsonResult getSmetkiList()
        {
            List<smetki> data = new List<smetki>();
            using (leskaEntities leskaEntities = new leskaEntities())
            {
                leskaEntities.Configuration.LazyLoadingEnabled = false;
                data = (from a in leskaEntities.smetkis
                orderby a.smID
                select a).ToList<smetki>();
            }
            return new JsonResult
            {
                Data = data,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
        }
public JsonResult getSmetkiList()
{
列表数据=新列表();
使用(leskaEntities leskaEntities=新的leskaEntities())
{
leskaEntities.Configuration.LazyLoadingEnabled=false;
数据=(来自leskaEntities.smetkis中的a)
orderby a.smID
选择一个.ToList();
}
返回新的JsonResult
{
数据=数据,
JsonRequestBehavior=JsonRequestBehavior.AllowGet
};
}
使用此代码工作属性JSON结果列表

当我试图像一个有问题的代码一样重新编写时,我就犯了这个错误

以下是正确的代码:

public JsonResult getSmetkiList()
{
    List<smetki> datasm = new List<smetki>();
    using (leskaEntities dc = new leskaEntities())
    {
       dc.Configuration.LazyLoadingEnabled = false;
       datasm = dc.smetkis.OrderBy(a => a.smID).ToList();
    }
    return new JsonResult { Data = datasm, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
public J