私のテーブルには と の 2 つの列がCreatedBy
ありCreateTime
ます。私のビュー フォームには、これらのフィールドがありません。ASP.NET MVC4 Edit (post) メソッドを使用してレコードを更新すると、これらの列が null に設定されます。しかし、私は値を保持したいです。Edit (post) メソッドで、データベースからレコードを取得し、これらを手動で設定できることを知っています。しかし、これらのフィールドの値を変更しないように Entity Framework に依頼できるかどうか疑問に思っています。
1541 次
3 に答える
3
いいえ、できません。古い値を保持したい場合は、最初にレコードを取得してから、更新する値を手動で割り当てる必要があります。他の唯一の方法は、次のように、プロパティごとにエンティティ プロパティを調べて、変更するものにタグを付けることです。
db.MyEntity.Attach(myEntity);
db.Entry(myEntity).Property(e => e.MyProperty).IsModified = true;
db.SaveChanges();
いずれにせよ、自分で手動作業を行う必要があります。
于 2013-08-13T19:52:27.497 に答える
2
ここで選択する必要があります:
1) @KennyZ が述べたように@Html.HiddenFor()
、ビューのどこかにフォームに追加します。
@Html.HiddenFor(m => m.CreatedBy)
@Html.HiddenFor(m => m.createTime)
2) そのエンティティを手動で更新し、これら 2 つのプロパティをそのままにしておくことができます。
var ent = dbctx.Entities.Find(model.ID);
ent.Prop1 = model.Prop1;
// ... also for other properties except those two property
dbctx.SaveChanges();
于 2013-08-14T07:35:30.773 に答える
0
できますよ。それらはすでにモデルにあると思います..でフォームに追加するだけHtml.HiddenFor(m => m.createdBy)
です. 現在、それらはフォームにありますが表示されておらず、Post メソッドにまだ値があります。
于 2013-08-13T21:26:45.200 に答える