ef core plus : ArgumentNullException : 값은 null 일 수 없습니다. 매개 변수 이름 : 속성

entity-framework-core entity-framework-plus

문제

ef core plus를 사용하면 모델의 행 집합을 업데이트하려고합니다.

await _context.Set<Critique>()
            .Include(c => c.User)
            .Where(c => c.Closed && c.User.Id == user.Id)
            .UpdateAsync(c => new Critique() { User = deletedUser });

여기에 다음과 같은 예외가 발생합니다.

ArgumentNullException : 값은 null 일 수 없습니다. 매개 변수 이름 : Check.cs, line 21의 Npgsql.EntityFrameworkCore.PostgreSQL.Utilities.Check.NotNull (T 값, 문자열 parameterName)

TargetInvocationException : 호출 타겟에 의해 예외가 Throw되었습니다. System.RuntimeMethodHandle.InvokeMethod (객체 대상, 객체 [] 인수, 서명 시그니처, bool 생성자, bool wrapException

ef core로 데이터를로드 할 때, 기대하는 1 행을로드합니다.

var test = await _context.Set<Critique>()
            .Where(c => c.Closed && c.User.Id == user.Id)
            .ToArrayAsync();

데이터베이스 모델은 아무것도 아니지만 여기에 게시하기에는 너무 큽니다. 나는 [필수]를 광범위하게 사용하고 있으며, 일대 다 관계가 풍부합니다.

(Btw, user.Id는 null이 아니며 사용 가능하며 deletedUser는 코드와 데이터베이스에서 모두 사용할 수 있습니다.)

이 오류를 어떻게 해석해야합니까? 내가 뭘 잘못하고 있죠?

당신의 도움을 주셔서 감사합니다!

수락 된 답변

Google 도서관은 가치를 업데이트 할 수 있지만 현재 탐색 속성을 사용하여 값을 업데이트 할 수 없습니다.

이것은 작동하지 않는다.

.UpdateAsync(c => new Critique() { User = deletedUser });

하지만 재산이 있다면이게 효과가 있었을거야.

.UpdateAsync(c => new Critique() { UserID = deletedUserID });

또한,이 정보를 검색하지 않기 때문에 .Include(c => c.User) 를 추가 할 필요가 없습니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow