我正在尝试获取 SQL 服务器的功能MERGE http://technet.microsoft.com/en-us/library/bb510625.aspx实体框架中的语句。
在 WCF 服务中,我从客户端应用程序接收记录列表。
我想将列表中所有记录中的特定字段与数据库表进行比较。
-如果数据库中有匹配的记录,我需要更新数据库记录中的其他字段。
-如果没有匹配,我需要插入整个记录。
-如果数据库表中有任何不在列表中的记录,我需要删除数据库中的记录。
这是迄今为止我正在努力解决的代码。
//List of people from whatever source
List peopleList = GetListOfPeopleFromClient();
using (var ctx = new PeopleEntities()) {
foreach (var person in peopleList) {
var dbPerson = ctx.People.FirstOrDefault(p => p.FirstName == person.FirstName);
if (dbPerson == null) {
dbPerson = new Person { FirstName = person.FirstName, LastName = person.LastName };
ctx.People.AddObject(dbPerson);
}
else {
dbPerson.LastName = person.LastName;
}
}
//============
//Yet to figure out how to do:
//delete from People where person.FirstName NOT in peopleList.FirstNames
//===========
ctx.SaveChanges();
}
我的问题是:你如何优雅地实现这一目标?
我将使用同步框架来完成该任务。它似乎非常适合这种场景。
您可以在以下位置找到有关该主题的大量信息MSDN http://msdn.microsoft.com/en-us/sync/default.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)