次の JsonResult が返します。
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.IntegerList_76C57D0878505062AEA67E9EB9F708830FA20FDE4F13A53543EC2E6ED84C1A2C'
そしてデバッガによると
'Children could not be evaluated'
ラインのために
var integerLists = db.IntegerLists.Include("Integers");
インクルードを削除すると、これは正常に実行されます。同様に、代わりにコメント付きのコードを実行すると。
過去に、ドメイン モデルを [IgnoreDataMember] で装飾することで循環参照を解決しましたが、今回はうまくいかないようです。
コントローラ
public JsonResult GetIntegerLists()
{
var integerLists = db.IntegerLists.Include("Integers");
//var integerLists = new List<IntegerList>();
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 1,
// Direction = "Ascending",
// Performance = 467,
// Integers = { new Integer { IntegerValue = 34 }, new Integer { IntegerValue = 5654 }, new Integer { IntegerValue = 343 } }
//});
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 2,
// Direction = "Ascending",
// Performance = 637,
// Integers = { new Integer { IntegerValue = 4 }, new Integer { IntegerValue = 646 }, new Integer { IntegerValue = 23 } }
//});
//integerLists.Add(new IntegerList()
//{
// IntegerListID = 3,
// Direction = "Ascending",
// Performance = 235,
// Integers = { new Integer { IntegerValue = 64378 }, new Integer { IntegerValue = 1 }, new Integer { IntegerValue = 533 } }
//});
return Json(integerLists, JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult Index(IntegerList viewModel)
{
if (ModelState.IsValid)
{
db.IntegerLists.Add(viewModel);
db.SaveChanges();
}
return View();
}
モデル
public class Integer
{
public int IntegerID { get; set; }
public int IntegerValue { get; set; }
public int IntegerListID { get; set; }
public virtual IntegerList IntegerList { get; set; }
}
public class IntegerList
{
public int IntegerListID { get; set; }
public string Direction { get; set; }
public long Performance { get; set; }
public virtual ICollection<Integer> Integers { get; set; }
}