EFコアで `ThenInclude`を使うときの例外

.net .net-core c# entity-framework entity-framework-core

質問

私はリポジトリパターンと共にEntity Framework Coreを使用しています。私は1つの問題を抱えています。

私はクラスCustomerCompanyEmailを持っていますが、ここでは関係のないものは隠していますが、次のように見えます:

public class Email
{
    public int EmailId { get; protected set; }

    public string Address { get; protected set; }

    public string Description { get; protected set; }

    public Email(string address, string description)
    {
        if (string.isNullOrEmpty(address))
            throw new ArgumentException(nameof(address));

        if (string.isNullOrEmpty(description))
            throw new ArgumentException(nameof(description));

        this.Address = address;
        this.Description = description;
    }

    protected Email() { }
}

public class Company
{
    public int CompanyId { get; protected set; }

    public IList<Email> Emails { get; set; }
}

public class Customer
{
    public int CustomerId { get; protected set; }

    public Company Company { get; set; }
}

マッピングは、 CustomerCompanyとの間に1対1の関連があり、 CompanyEmail間に1 Customer関連があるように設定されています。

CustomersRepository私は次のメソッドを作成しました:

public IEnumerable<Customer> GetAll()
{
    return _context.Set<Customer>()
                   .Include(x => x.Company)
                       .ThenInclude(x => x.Emails)
                   as IEnumerable<Customer>;
}

さて次に、 ThenIncludeピースが問題をThenIncludeています。このメソッドを使用しようとすると、 sourceがnullであるという1つの取り消しを得ることになります。

私はすべてを見直しましたが、間違ったことは何も見つかりませんでした。すべてが正しく書かれているようです。

全体のポイントは次のとおりです。エンティティABCがあり、 AB 1つを持ち、 BC多くを持ちますAを取得すると、すべての関連性を取得する必要があります。

私はここで間違って何をしていますか?なぜこの例外が発生していますか?

受け入れられた回答

これはGithub https://github.com/aspnet/EntityFramework/issues/2274のこのバグレポートに関連しているようです

IOEとして報告され、修正されたと報告されました。例外として、NREとして戻ってきました。問題はそれがもう一度修正されたと言いますが、私はどのバージョンではわかりませんし、現在使用しているバージョンがわかりません。

(検索されたgithub reproの問題を含む - TONがあります。)

不安定に聞こえる。それから離れてください。インクルードの完全なパスを直接指定することで、問題を完全に回避することができます

muhCompaniesOrWhatevs.Include(x => x.Company.Emails);


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ