【问题标题】:Synchronize Records using Entity Framework使用实体框架同步记录
【发布时间】:2010-10-13 23:28:06
【问题描述】:

我正在尝试在实体框架中获取 SQL 服务器 MERGE 语句的功能。

在 WCF 服务中,我从客户端应用程序接收记录列表。 我想将列表中所有记录中的特定字段与数据库表进行比较。

-如果db中有匹配的记录,我需要更新db记录中的其他字段。

-如果没有匹配,我需要插入整条记录。

-如果db表中有任何不在列表中的记录我需要删除db中的记录。

这是我目前正在努力的代码。

//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(); }

我的问题是:你如何优雅地实现这一目标?

【问题讨论】:

  • 你的代码已经比我最近用来实现非常相似的东西的代码更优雅了。除非 EF 有一个我们都不知道的合并功能,否则我会很高兴的?
  • @Chris:谢谢。我害怕有人会告诉我这些。我希望有一些我不知道的“linqish”技巧。

标签: c# sql-server entity-framework


【解决方案1】:

我会使用同步框架来完成这项任务。它似乎非常适合这种情况。

你可以在MSDN找到很多关于这个主题的信息

【讨论】:

  • 虽然在我的情况下有点矫枉过正,但同步框架似乎是最适合的解决方案。
  • 我也想做同样的事情,但从来没有找到任何可以清楚地展示如何做的例子。有人可以帮忙吗?
  • 注意:Microsoft Sync Framework 不支持实体框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
相关资源
最近更新 更多