0

エンティティからのいくつかの列を持つ mvc ビューがあります。db.SaveChanges() を実行すると、ビューの一部ではないすべての列が NULL で更新されるため、データベース レコードに存在する値が上書きされます。それはとても不自由です。ビューに対してModelViewを実行し、必要な列だけをバインドできることを認識しています。しかし、この特定の更新中に列を「無視」し、MvC ビューに存在しない列を更新しないように、単に EF に指示する方法を探しています。私はEF 5を使用しています。何か提案はありますか?

4

2 に答える 2

0

別のモデルの作成を避けたい理由はわかりませんが、何をしているのかはわかっていると思いますので、このアプローチを試して、EF をだましてプロパティが変更されていないと思わせるようにしてください。

var entry = context.Entry(obj);
entry.Property(name).IsModified = false;

自分で試したことはありませんが、EF 5 で可能になるはずです。うまくいかない場合は、entry.CurrentValues.PropertyNamesコレクションを検索してプロパティ エントリにアクセスし、 を に設定してIsModifiedみてfalseください。

于 2012-11-25T22:34:45.200 に答える
0

私が必要としていたのはこれだと思います

User u = db.Users.Find(user.UserID);
        if (u!=null) {

            TryUpdateModel(u);
if (ModelState.IsValid)
{
                db.SaveChanges();
}
于 2012-11-26T00:42:04.067 に答える