我最近收到了客户的错误报告,但没有运气解决它。我希望有人能给我一些可能是错误的见解。
错误似乎很简单:
Csla.DataPortalException:DataPortal.Delete 失败(System.InvalidOperationException:序列在 System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 源)中包含多个元素
这是我的 DataPortal_Delete 方法,它以 FileId (PK) 作为参数。
private void DataPortal_Delete(SingleCriteria<File, Guid> criteria)
{
using (var ctx = ContextManager<Ronin.Data.RoninDataContext>
.GetManager(Database.ApplicationConnection, false))
{
var data = ctx.DataContext.Files
.Single(row => row.FileId == criteria.Value);
ctx.DataContext.FileSources.DeleteAllOnSubmit(data.FileSources);
ctx.DataContext.Files.DeleteOnSubmit(data);
ctx.DataContext.SubmitChanges();
}
}
我检查的第一件事是查看是否有另一条具有相同 FileId 的记录(虽然是主键,但这应该是不可能的)。所有 FileId 实际上都是唯一的。我启动了连接到客户端数据库的应用程序并尝试删除记录,它可以正常工作。客户站点的 IT 人员使用“问题步骤记录器”向我发送用户所采取操作的逐步屏幕截图。没有什么异常,当他使用其他机器时,他能够删除记录而没有任何错误。显然,这只发生在应用程序在 Windows 7 中运行时。
也就是说,关于可能导致这种情况的任何想法?