1

当我尝试访问元数据 URL 时,Breeze 出现此错误:

http://localhost:1886/api/posts/metadata

检测到类型为“System.Xml.Linq.XAttribute”的属性“PreviousAttribute”的自引用循环。路径“root.firstAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute.nextAttribute”。异常类型:“Newtonsoft.Json.JsonSerializationException”

我的另一个 URL 正常工作并从数据库中检索数据就好了

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 是否存在版本问题?

4

2 回答 2

0

我的项目中的某些东西一定已经损坏了,因为我从一个干净的 HotTowel 模板重新开始,问题就神奇地消失了

于 2013-06-24T21:01:35.623 回答
0

问题可能是实体框架生成代理对象。试着转动这些

dbContext.Configuration.ProxyCreationEnabled = false;
于 2013-06-21T08:58:30.313 回答