【发布时间】:2014-05-20 05:48:27
【问题描述】:
我有一个问题。通过 Linq To Sql 更新表中的一行时, 我想知道唯一更改的字段。 假设我在一个页面中有 25 个字段,但我只更新了 3 个字段,并且在更新时,我只需要获取这 3 个字段,它是旧值 + 已修改或新值。
可以在 Linq To Sql 中实现吗?
我在互联网上搜索东西并开始了解 DB.GetChangeSet() 但它只是给了我修改后的行。
我已经检查了来自 here 的其他相关问题,但我没有得到他们使用的方式我也尝试过,但它给了我错误“序列不包含元素”
我试过这样:: 其中函数参数中的 TableClass ObjTbl 是包含来自模型的新值的 Object。
public int UpdateDetails(int Id, TableClass ObjTbl)
{
using (DataContext DB = new DataContext())
{
var Data = DB.TableClass.Where(m => m.PkId == Id).FirstOrDefault();
Data .FirstName = ObjTbl.FirstName;
Data .MiddleInitials = ObjTbl.MiddleInitials;
Data .FkClientID = ObjTbl.FkClientID;
Data .LastName = ObjTbl.LastName;
DB.SubmitChanges();
TableClass instance = DB.GetChangeSet().Updates.OfType<TableClass>().Where(m => m.PkId == Id).First();
DB.TableClass.GetModifiedMembers(instance);
}
}
【问题讨论】:
-
使用具有明确定义目的的视图模型。
标签: c# asp.net-mvc-4 linq-to-sql linq-to-entities