Linq to Entities/Entity Framework删除异常

and*_*351 1 c# sql-server linq-to-entities entity-framework exception

我正在使用WPF系统,该系统使用实体框架挂钩到旧的遗留数据库.我们在调试时挂起实时数据的备份,并在空数据库上运行测试.我只在尝试从实时数据的备份中删除时收到以下错误.

这段代码:

License license = ReadLicense(id);
entities.DeleteObject(license);
entities.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

产生这个SQL:

exec sp_executesql N'delete [dbo].[Product]
where ((([Group_ID] = @0) and ([Parent_ID] = @1)) and ([Prod_ID] = @2))',N'@0 nvarchar(32),@1 nvarchar(32),@2 nvarchar(32)',@0=N'someIdValue1',@1=N'someIdValue2',@2=N'someIdValue3'
Run Code Online (Sandbox Code Playgroud)

这又产生了这个错误:

消息208,级别16,状态1,过程TrackDeletedProduct,第4行.无效的对象名称'DeletedRecords.dbo.Product_Deleted'.

如果将生成的SQL更改为"select"查询,则返回一行,以便"ReadLicense"返回一个有效的实体.我无法理解为什么这不起作用,特别是当它只针对实时数据时."许可"实体是继承自基础"产品"实体的两个实体之一.

干杯.

mar*_*c_s 5

从我所看到的情况来看,看起来好像你的表上Product有一个触发器,当你删除一行时会激活它,并调用该存储过程TrackDeletedProduct.

该过程(只是在这里猜测)尝试将产品条目复制到数据库中的Product_Deleted表中DeletedRecords,但是失败了 - 要么其他数据库或表似乎不存在.

所以我认为这与ADO.NET Entity Framework或LINQ-to-Entities没有任何关系,但与SQL Server有很多关系 - 检查你的后端数据库配置!