多対多の関係を持つ 2 つのエンティティがあります。Include() を使用して 1 つのエンティティを熱心に読み込むと、子が読み込まれ、子の子も含まれます。孫はいらない。
遅延読み込みをオフにしました: LazyLoadingEnabled = false; 自己参照ループを無視しています:
config.Formatters.JsonFormatter.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling
.Ignore;
物事をよりよく説明するには:
public class A
{
public int Id { get; set; }
public ICollection<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public ICollection<A> As { get; set; }
}
IUnitOfWork パターン(ジェネリック リポジトリの作成を参照) を使用しているので、次のようにエンティティをロードします。
return unitOfWork.ARepository.Get(a => a.Id == Id, null, "Bs");
次のような JSON が返されます。
[
{
"Id": 1,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 2,
"Bs": [
...
},
{
"Id": 2,
"Bs": [
{
"Id": 1,
"As": [
{
"Id": 1,
"Bs": [
...
自己参照エンティティを渡すのは本当に無駄に思えます。これを防ぐ方法はありますか?