我在repo中有方法,从数据库表中获取所有数据。
这是Model
public partial class User
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public User()
{
this.Roles = new HashSet<Role>();
}
[Key]
public int Id { get; set; }
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Role> Roles { get; set; }
}
这是回购代码
public List<User> GetUsers()
{
using (var ctx = new HomstersTestDBEntities())
{
var items = ctx.Users.ToList();
return items;
}
}
就像我在控制器中所说的那样
public JsonResult GetUsers()
{
var users = _userrepo.GetUsers();
return Json(users.ToArray(), JsonRequestBehavior.AllowGet);
}
但是当我运行网站时,我在调用方法
时遇到此错误我该如何解决?
答案 0 :(得分:0)
我认为问题是在函数返回Json(users.ToArray(),JsonRequestBehavior.AllowGet)中序列化角色期间;它试图获得对角色的访问权限,但是由于上下文被处理掉,因为他的生命周期只在GetUsers()函数中抛出异常。
我认为你应该在处理上下文之前在GetUsers函数中获得这些角色。我还没有测试过它。如果它没有用,我会尝试重现它。
public List<User> GetUsers()
{
using (var ctx = new HomstersTestDBEntities())
{
var items = ctx.Users.Include(x => x.Roles).ToList();
return items;
}
}