在Sql Server环境中调试此问题的一种方法是使用SqlServer副本随附的Sql Profiler,或者如果使用Express版本,请通过以下链接从CodePlex免费获得Express Profiler的副本:
Express Profiler
通过使用Sql Profiler,您可以访问EF向数据库发送的内容。就我而言,总计为:
exec sp_executesql N'UPDATE [dbo].[Category]
SET [ParentID] = @0, [1048] = NULL, [1033] = @1, [MemberID] = @2, [AddedOn] = @3
WHERE ([CategoryID] = @4)
',N'@0 uniqueidentifier,@1 nvarchar(50),@2 uniqueidentifier,@3 datetime2(7),@4 uniqueidentifier',
@0='E060F2CA-433A-46A7-86BD-80CD165F5023',@1=N'I-Like-Noodles-Do-You',@2='EEDF2C83-2123-4B1C-BF8D-BE2D2FA26D09',
@3='2014-01-29 15:30:27.0435565',@4='3410FD1E-1C76-4D71-B08E-73849838F778'
go
我将其复制粘贴到Sql Server的查询窗口中并执行它。果然,尽管它运行了,但该查询影响了0条记录,因此EF返回了错误。
就我而言,问题是由CategoryID引起的。
没有由发送到数据库的ID EF标识的CategoryID,因此0条记录受到影响。
这不是EF的错,而是错误的null合并“ ??” 在将废话发送到数据层的View Controller中向上声明。