小编Bom*_*fet的帖子

如何使用LINQ-to-SQL更新表而不必删除所有现有记录?

假设我有一个只包含两列的简单表:

MailingListUser
- PK ID(int)
- FK UserID(int)

我有一个叫做的方法. UpdateMailList(IEnumerable<int> userIDs)

在LINQ中,如何为传入的参数中存在但在db中不存在的userID进行插入,删除db中但不再存在于UserID中的那些,并保留已经存在的那些仅在db和userID中?

向用户显示一个复选框列表,当它第一次加载时,它会为已选中的maillist选择现有成员.

然后,用户可以检查并取消选中各种用户并点击"保存".一旦发生这种情况,我需要使用清单的状态更新数据库的状态.

这是我现在正在做的事情:

        public void UpdateMailList(IEnumerable<int> userIDs)
        {
            using (MainDataContext db = new MainDataContext())
            {
                var existingUsers = (from a in db.MailListUsers
                                     select a);

                db.MailListUsers.DeleteAllOnSubmit(existingUsers);
                db.SubmitChanges();


                var newUsers = (from n in userIDs
                                select new MailListUser
                                {
                                    UserID = n
                                });

                db.MailListUsers.InsertAllOnSubmit(newUsers);
                db.SubmitChanges();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有比简单地删除MailingListUser表中的所有条目并重新插入所有userIDs值更好的方法?

.net c# linq linq-to-sql

5
推荐指数
1
解决办法
1078
查看次数

标签 统计

.net ×1

c# ×1

linq ×1

linq-to-sql ×1