当我尝试序列化通过EF4 CTP5返回的对象时,我遇到循环引用问题.我使用代码第一种方法和简单的poco为我的模型.
我已经将[ScriptIgnore]属性添加到任何提供对对象的反向引用的属性,并且令人烦恼的是,如果我手动实例化poco,它们似乎工作正常,即它们串行化为JSON,并且确认了scriptignore属性.但是,当我尝试序列化从DAL返回的对象时,我得到循环引用异常"序列化'System.Data.Entity.DynamicProxies.xxxx'类型的对象时检测到循环引用"
我已经尝试了几种方法来检索数据,但他们都遇到了这个错误:
public JsonResult GetTimeSlot(int id) {
TimeSlotDao tsDao = new TimeSlotDao();
TimeSlot ts = tsDao.GetById(id);
return Json(ts);
}
Run Code Online (Sandbox Code Playgroud)
下面的方法效果稍好,而不是时间段动态代理对象导致循环引用其为约会对象.
public JsonResult GetTimeSlot(int id) {
TimeSlotDao tsDao = new TimeSlotDao();
var ts = from t in tsDao.GetQueryable()
where t.Id == id
select new {t.Id, t.StartTime, t.Available, t.Appointment};
return Json(ts);
}
Run Code Online (Sandbox Code Playgroud)
这个问题的任何想法或解决方案?
更新 我希望尽可能使用开箱即用的序列化器,尽管Json.Net通过nuget可以替代我希望它可以像我预期的那样使用它...
c# asp.net entity-framework-4 entity-framework-ctp5 asp.net-mvc-3
使用.NET客户端应用程序,我试图通过asp .net web api JSON发布一个包含对象B集合的对象A,创建一个LocalDB数据库并存储数据.然后再次获取对象A.
该应用程序包括3个项目.一个asp .net mvc 4 web api项目,一个.Net控制台应用程序和一个.Net类库.asp .net应用程序和控制台应用程序都引用类库,其中包括对象A和B的类定义.
班级图书馆:
public class Actor
{
public Actor()
{
this.Movies = new HashSet<Movie>();
}
public int ActorID { get; set; }
public string Name { get; set; }
public virtual ICollection<Movie> Movies { get; set; }
}
public class Movie
{
public Movie()
{
this.Actors = new HashSet<Actor>();
}
public int MovieID { get; set; }
public string Name { get; set; }
public virtual ICollection<Actor> Actors { get; …Run Code Online (Sandbox Code Playgroud)