efコアには、paymentRequirementエンティティを持つ契約エンティティがあります。契約のIDを指定して、支払い要件エンティティのみを戻したい。
public async Task<PaymentRequirement> GetPaymentRequirementByContractAsync(long Id) =>
await context.Contracts.Include(p => p.PaymentRequirement).FirstOrDefaultAsync(p => p.Id == Id)?.PaymentRequirement
重大度コード説明プロジェクトファイル行抑制状態エラーCS1061「タスク」に「PaymentRequirement」の定義が含まれておらず、「タスク」タイプの最初の引数を受け入れるアクセス可能な拡張メソッド「PaymentRequirement」が見つかりませんでした(usingディレクティブがないか、アセンブリ参照?)ミネラルC:\ Users \ c-bdelling \ source \ repos \ Minerals \ Minerals \ Repository \ PaymentRequirementRepository.cs15アクティブ
これが契約です
public class Contract : AuditedEntity
{
public long Id { get; set; }
public long? PaymentRequirementId { get; set; }
public PaymentRequirement PaymentRequirement { get; set; }
}
ここに支払い要件があります
public class PaymentRequirement
{
public long Id { get; set; }
public decimal? FloorPrice { get; set; }
}
式全体の結果が待たれており、PaymentRequirement
待てない:
context.Contracts
.Include(p => p.PaymentRequirement)
.FirstOrDefaultAsync(p => p.Id == Id)?
.PaymentRequirement
あなたは本当にの結果を待つ必要がFirstOrDefaultAsync
あります、そしてあなたは括弧を導入することによってこれをすることができます:
(await context.Contracts
.Include(p => p.PaymentRequirement)
.FirstOrDefaultAsync(p => p.Id == Id))?
.PaymentRequirement
これを言ったとしてPaymentRequirements
も、DbSet
あなたの文脈にあると仮定すると、これを行うためのよりクリーンな方法があるはずです:
await context.PaymentRequirements
.FirstOrDefaultAsync(p => context.Contracts
.Any(c => c.Id == Id && c.PaymentRequirement == p));
そうすれば、データベースからはが返され、は返されPaymentRequirement
ませんContract
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加