質問

ユーザーが特定のページにアクセスしたときに、テーブルのすべての行を更新する必要があります。すべてのフィールドを「false」に更新する必要があります。このコードを試しました:

var history = db.UserHistory.Where(m => m.UserID == id);
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();

しかし、それは私にエラーメッセージを投げかけます。誰かがこのアップデートで私を助けることができますか?

役に立ちましたか?

解決

Linqが一度に多くの行を更新しなかったことを最初に手に入れることができませんでした。ループを作成してそれぞれを更新する必要があります。私の最終コードはこれです:

var history = db.UserHistory.Where(m => m.UserID == id).ToList();
TryUpdateModel(history);
history.ForEach(m => m.IsActive = false);
db.SaveChanges();

他のヒント

単一のエントリを選択しているだけなので、おそらくintellisenseで表示されるはずの.firstordefault()を最初の行に追加する必要があります。

var history = db.UserHistory.Where(m => m.UserID == id).FirstOrDefault();
TryUpdateModel(history);
history.IsActive = false;
db.SaveChanges();

現在、単一のエントリとは対照的に、iQueryableを返しています。 FirstOrdeFaultは単一のユーザーヒストリーエンティティを返すため、少なくとも1つのアイテムをTryUpDateModelに渡すことになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top