我有一个实体集employee_table
,我通过excel表获取数据,我已经加载到内存中,用户将点击Save
以保存数据库中的更改及其一切都很好,第一次插入记录,没有问题。
但是如何才更新所做的更改?意思是,假设我有10行和5列,10行中说第7行被修改,5列中的第3列被修改,我只需更新那些更改并保留其他值的现有值列。
我可以检查if (myexistingItem.Name != dbItem.Name) { //update }
,但它非常乏味且效率不高,我确信有更好的方法可以处理。
这是我到目前为止所得到的。
var excelData = SessionWrapper.GetSession_Model().DataModel.OrderBy(x => x.LocalName).ToList();;
var dbData = context.employee_master.OrderBy(x => x.localname).ToList();
employee_master = dbEntity = employee_master();
if (dbData.Count > 0)
{
//update
foreach (var dbItem in dbData)
{
foreach(var xlData in excelData)
{
if(dbItem.customer == xlData.Customer)
{
dbEntity.customer = xlData.Customer;
}
//...do check rest of the props....
db.Entry(dbEntity).State = EntityState.Modified;
db.employee_master.Add(dbEntity);
}
}
//save
db.SaveChanges();
}
else
{
//insert
}