5

私のテーブルには と の 2 つの列がCreatedByありCreateTimeます。私のビュー フォームには、これらのフィールドがありません。ASP.NET MVC4 Edit (post) メソッドを使用してレコードを更新すると、これらの列が null に設定されます。しかし、私は値を保持したいです。Edit (post) メソッドで、データベースからレコードを取得し、これらを手動で設定できることを知っています。しかし、これらのフィールドの値を変更しないように Entity Framework に依頼できるかどうか疑問に思っています。

4

3 に答える 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 に答える