EF 中是否存在与 T-SQL MERGE
语句真正等效的语句?我知道他们在以前的版本中添加了 AddOrUpdate
,这显然可以处理添加或更新方面的问题。它缺少当与源不匹配时然后从目标表中删除的信息。
这个特定的过程实际上只是批发同步第三方 json 结构。我没有在 Entity Framework 中的包装添加/更新/删除函数中找到任何内容。我想我会在这里询问或提出任何关于包装这个与枚举实体、检查是否存在以及删除数据库中但不在源实体中的 key 的创造性想法。
谢谢。
最佳答案
这有点奇怪,但您可以根据记录的 ID 选择记录,这些记录不包含在您从“源”实体中获得的集合中,然后从 DbContext 中删除这些记录。
var sourceIds = source.Select(s=>s.Id);
var notFounds = context.Target.Select(s=>!sourceIds.Contains(s.Id));
foreach (var notFound in notFounds) {
context.Target.DeleteObject(notFound);
}
遗憾的是没有批量删除。
关于c# - Entity Framework 中的真正合并语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277738/