无法从 SQL Server CE 中删除记录

Posted

技术标签:

【中文标题】无法从 SQL Server CE 中删除记录【英文标题】:Cant delete record from SQL Server CE 【发布时间】:2013-10-14 08:58:06 【问题描述】:

我有一个 ASP.NET MVC 应用程序。我使用 EF 5.0 将数据持久保存在 SQL Server CE 类型的数据库中。我已经安装了 SqlServerCe.Enitity NuGet 包。我可以使用 Linq 和我的模型对象成功处理数据库记录上的创建、读取和更新操作。但是由于某些原因,我无法从数据库中删除任何记录。对象在模型级别被擦除,但更改没有持久保存在数据库中。可能是什么原因造成的?

这是我删除记录的方法:

var files = context.Files.ToList();
files.RemoveAll(x => x.Name == "test");
context.SaveChanges();

这是我的连接字符串:

<add name="DefaultConnection" connectionString="Data Source=C:\SLG PROJECTS\BACKUPS CHECK SYSTEM\Data\aspnet.sdf" providerName="System.Data.SqlServerCe.4.0" />

【问题讨论】:

【参考方案1】:

试试这个:

context.Files.Where(x => x.Name == "test").ToList()
.ForEach( f => context.Files.Remove(f));

context.SaveChanges();

RemoveAll 可能未编译为 SQL,也未在 SQL Server 中执行。

【讨论】:

另外,EF6 新增了一个 RemoveRange 方法

以上是关于无法从 SQL Server CE 中删除记录的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server CE 回滚不撤消删除

在 Sql Server CE 中缩小或压缩?

sql server解决无法删除修改拥有外键约束的表或表的记录字段

从 SQL Server ColumnStore 中删除会出现“无法插入重复键”错误

使用R(DBI包)从SQL Server表中删除行

如何删除大量数据 sql server2005 数据量在8千万左右??