ef core plus:ArgumentNullException:値をnullにすることはできません。パラメータ名:property

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の21行目のproperty Npgsql.EntityFrameworkCore.PostgreSQL.Utilities.Check.NotNull(T value、string parameterName)

TargetInvocationException:呼び出しのターゲットによって例外がスローされました。 System.RuntimeMethodHandle.InvokeMethod(object target、object []引数、シグニチャシグナル、ブールコンストラクタ、ブールwrapException

ef coreでデータをロードすると、期待する1行がロードされます。

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

データベースモデルは空想的なものではありませんが、ここに投稿するには大きすぎます。私は[必須]を多用しています、そして一対多の関係がたくさんあります。

(ところで、user.Idはnullではなく利用可能であり、deletedUserもコードとデータベースの両方で利用可能です。)

このエラーはどのように解釈されるべきですか?何がおかしいのですか?

ご協力いただきありがとうございます!

受け入れられた回答

このライブラリでは値を更新できますが、ナビゲーションプロパティを使用して値を更新することはできません現時点では

これはうまくいきません

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

あなたが財産を持っていればしかし、これはうまくいっただろう

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

また、この情報を取得しないので、 .Include(c => c.User)を追加する.Include(c => c.User)はありません。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow