实体框架4.1,MVC3 JsonResult和循环引用

sf.*_*sf. 1 json entity-framework-4.1 asp.net-mvc-3

我正在尝试使用ASP.NET MVC3学习Entity Framework Code First开发.

假设我有一个简单的拍卖和投标数据模型,我想查询所有拍卖及其投标.

我已经关闭了LazyLoadingEnabled和ProxyCreationEnabled.

这是我的代码:

public class MiCoreDb2Context : DbContext
{
    public MiCoreDb2Context()
        : base()
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;
    }

    public DbSet<Auction> Auctions { get; set; }
    public DbSet<Bid> Bids { get; set; }
}

public class Auction
{
    public int AuctionId { get; set; }
    public virtual ICollection<Bid> Bids { get; set; }
}

public class Bid
{
    public long BidId { get; set; }
    public int AuctionId { get; set; }

    [ForeignKeyAttribute("AuctionId")]
    public virtual Auction Auction { get; set; }
}


public JsonResult Thing()
{
    List<Auction> auctions;

    using (var db = new MiCoreDb2Context())
    {
        var auctions = (from a in db.Auctions.Include("Bids") select a).ToList();
    }

    return Json(auctions, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

加载页面时,会出现循环引用.我该如何解决这个问题?

Dar*_*rov 8

加载页面时,会出现循环引用.我该如何解决这个问题?

通过使用视图模型(以及您对ASP.NET MVC可能遇到的任何问题的答案:-)).Ayende Rahien 有关于此主题的一系列博客文章.

结论:绝对总是将视图模型传递给视图或从视图中获取视图模型.绝对不会在视图中传递/获取模型(EF,域,...).一旦这个基本规则得到尊重,你就会发现一切都有效.