当我尝试访问元数据网址时,我收到了Breeze的错误:
http://localhost:1886/api/posts/metadata
为类型为“System.Xml.Linq.XAttribute”的属性“PreviousAttribute”检测到自引用循环。路径'root.firstAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute'。 ExceptionType:“Newtonsoft.Json.JsonSerializationException”
我的其他网址正在运行,并且很好地从数据库中检索数据
http://localhost:1886/api/Posts/posts
我的post.cs没有什么可以自我引用,看起来像这样
public class Post
{
public int PostID { get; set; }
public int UserID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
我的控制器:
[BreezeController]
public class PostsController : ApiController
{
readonly EFContextProvider<PostsDbContext> contextProvider = new EFContextProvider<PostsDbContext>();
[HttpGet]
public string Metadata()
{
return contextProvider.Metadata();
}
[HttpGet]
public IEnumerable<Post> Posts()
{
var posts = contextProvider.Context.Posts;
return posts;
}
}
我使用Visual Studio 2010和EF 4以及.net 4停留在Windows XP上.Breeze及其中任何版本都存在版本问题吗?
答案 0 :(得分:0)
问题可能是Entity Framework生成代理对象。尝试转换
dbContext.Configuration.ProxyCreationEnabled = false;
答案 1 :(得分:0)
我的项目中的某些内容必定已经腐败,因为我从一个干净的HotTowel模板重新开始,问题神奇地消失了