我在数据库中的现有表中添加了一列,然后在刷新实体框架后,数据表 (js) 停止工作(服务器 500 错误)



我添加到表中的列与附加到数据表的表之间没有关系。我检查了所有模型文件,没有区别。没有警告或错误。所有方法都有效。CRUD 操作正常工作,但单个数据表不起作用。数据表的代码行没有变化。我也尝试使用断点,将数据提供给 datatable 的方法也从表中获取记录。

Controller method-
public ActionResult GetData()
{
ThicketdbEntities db = new ThicketdbEntities();
List<Product> products = db.Products.ToList<Product>();
return Json(new { data = products }, JsonRequestBehavior.AllowGet);

}
Datatable function -
$(document).ready(function () {
dataTable= $("#productsTable").DataTable({
"ajax": {
"url": "/Admin/GetData",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "ProductId" },
{ "data": "ProductName" },
{ "data": "Price" },
{ "data": "Description" },
{ "data": "Dimension" },
{ "data": "Category" },
{"data":"SubCategory"},
{
"data": "ProductId", "render": function (data) {
return "<a class='btn btn-default btn-sm' onclick=PopupForm('@Url.Action("AddOrEdit","Admin")/"+data+"')><i class='fa fa-pencil'></i> Edit</a><a class='btn btn-danger btn-sm' style='margin-left:5px;' onclick='Delete("+data+")'><i class='fa fa-trash'></i> Delete</a>";
},
"orderable": false,
"searchable":false,
"width": "150px"
}
]
});
});

产品型号类别: 公共部分类产品 { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors"(] 公共产品(( { 这。订单详情 = 新的哈希集((; }

public int ProductId { get; set; }
[Required(ErrorMessage = "This field is Required")]
public string ProductName { get; set; }
[DisplayFormat(DataFormatString = "{0:C0}")]
[Required(ErrorMessage = "This field is Required")]
public Nullable<decimal> Price { get; set; }
[Required(ErrorMessage = "This field is Required")]
public string Description { get; set; }
[Required(ErrorMessage = "This field is Required")]
public string Dimension { get; set; }
[DisplayName("Upload Image")]
public string Image { get; set; }
public HttpPostedFileBase ImageFile { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OrderDetail> OrderDetails { get; set; }
}

为了纠正核心问题,即循环对象错误,最好使用Newtonsoft进行序列化:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(dataObj /*result data object*/, new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});

但是,最好在异步模式下使用 IHttpActionResult

public async Task<IHttpActionResult> Get()
{
List<Product> products = await db.Products.ToListAsync();
return Ok( products /*put your object as it is, and better wrap with DTO approach*/)
}

最新更新