我正在寻找一种在创建新条目之前检查数据库中现有条目的方法。
我有一个非常简单的表Person
,它有两个值RowId
和UserId
. 这些不是同一个值,UserId
是来自外部服务的值,可能是任何东西,RowId
是我系统中的唯一标识符。
保存和建模具有 aPerson
作为外来对象的对象时,我想使用 填充对象,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
方法的原因。
我现在认为这是不可能的,最好将其作为我的人员查找的一部分并有两个隐藏的文本框。