0

多対多の関係を持つ 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": [

         ...

自己参照エンティティを渡すのは本当に無駄に思えます。これを防ぐ方法はありますか?

4

1 に答える 1