如何使BreezeJS元数据工作

时间:2013-06-20 23:48:21

标签: asp.net-web-api breeze

当我尝试访问元数据网址时,我收到了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及其中任何版本都存在版本问题吗?

2 个答案:

答案 0 :(得分:0)

问题可能是Entity Framework生成代理对象。尝试转换

dbContext.Configuration.ProxyCreationEnabled = false;

答案 1 :(得分:0)

我的项目中的某些内容必定已经腐败,因为我从一个干净的HotTowel模板重新开始,问题神奇地消失了