c# - 使用 Entity Framework 同步记录

标签 c# sql-server entity-framework

我正在尝试获取 SQL 服务器的功能 MERGE Entity Framework 中的声明。

在 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 上找到有关该主题的大量信息。

关于c# - 使用 Entity Framework 同步记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928873/

相关文章:

c# - 使用 Visual Studio 事后调试 C# 应用程序

c# - ServiceStack.Net Redis : Storing Related Objects vs. 相关对象 ID

sql - SQL Server 触发器内的存储过程调用是否隐式线程安全且原子?

sql-server - 从 XML 中获取串联的值字符串

sql - 2012 SQL作业问题

entity-framework - SQL Server Profiler - 为什么有些调用 RPC :Completed and Some Calls SQL:BatchCompleted

asp.net-mvc - 使用 Entity Framework 代码在模型中定义唯一属性

c# - 将事件或命令分配给 ResourceDictionary 中的 DataTemplate

c# - 基于 Session 值的 MVC OutputCache

c# - EF如何生成Proxy类