新しいエントリを作成する前に、データベース内の既存のエントリを確認する方法を検討しています。
Person
2つの値RowId
と。を持つ非常に単純なテーブルがありますUserId
。これらは同じ値ではなく、UserId
外部サービスからの値であり、潜在的に何でもかまいませんがRowId
、私のシステムの一意の識別子です。
Person
を外部オブジェクトとして持つオブジェクトを保存してモデル化するときは、を使用してオブジェクトにデータを入力し、オブジェクトをUserId
保存するときに、そのレコードがUserId
存在するかどうかを確認し、新しいレコードを作成する代わりにそのレコードを使用するかどうかを確認します。
SaveChanges()
私は自分のメソッドをオーバーライドすることを考えていましDbContext
たが、これがここで実行できるかどうかはわかりません。
誰かが私がこれについてどうやって行くことができるかについて何か考えを持っていますか、それとも私は私のコントローラーにログインを実装する方が良いでしょうか?
私はそれを文脈に入れるために私が現在どのように物事をしているのかを示すと思いました:
コントローラ:
public MvcHtmlString UpdatePanelDetails(int id, FormCollection values)
{
Panel panel = db.Panels.Find(id);
bool worked = TryUpdateModel(panel,values);
if (ModelState.IsValid)
{
db.Entry(panel).State = System.Data.EntityState.Modified;
db.SaveChanges();
return new MvcHtmlString("Success");
}
else
{
return new MvcHtmlString("Failed");
}
}
このPanel
モデル内に私のPerson
オブジェクトがあります。私のビュー内で、バインドされている非表示のテキストボックスにデータを入力する外部の人物システムを検索しているPerson.UserId
ので、にTryUpdateModel
バインドPerson
されてPanel
いますが、RowId
は0です。
私が望んでいるのは、正しい場所にデータを入力できる単一の場所RowId
(その人がすでに存在する場合)を作成できるようにすることです。そのため、SaveChanges
メソッドのオーバーライドを検討していました。
私は今、それは不可能であり、人の検索の一部としてそれを行い、2つの隠されたテキストボックスを持っている方が良いと考えています。