我有下面的模型。删除实体框架中的多对多关系会引发错误
我试图删除与ActivityType相关的给定productType;但是,当我试图通过我的泛型方法发起删除操作时,它不仅删除了关系,而且试图删除ProductType!在where子句中导致erorr的主键为零
“存储更新,插入或删除语句影响了意外数量的行(0)。实体可能在实体加载后被修改或删除。 ObjectStateManager条目“。
要在下面删除的代码;
public void DeleteEntityAndSaveChanges<T, T1>(T entity, List<T1> subEntities)
where T : class
where T1 : class
{
Set<T>().Attach(entity);
DeleteEntitiesAndSaveChanges(subEntities);
}
public void DeleteEntitiesAndSaveChanges<T>(List<T> entities) where T : class
{
foreach (var entity in entities)
{
Set<T>().Attach(entity);
Set<T>().Remove(entity);
}
SaveChanges();
}
用法:
DbContext.DeleteEntityAndSaveChanges(request.ActivityType, request.ActivityType.ProductTypes);
这是所生成的SQL这就是:
exec sp_executesql N'delete [dbo].[ProductTypeActivityTypes]
where (([ProductType_ProductTypeId] = @0) and ([ActivityType_EntityObjectId] = @1))',N'@0 bigint,@1 bigint',@0=1,@1=20
这是有问题的SQL是不想送出,但被由EF生成:
EXEC sp_executesql的N'delete [DBO]。[ProductTypes] 其中(([ProductTypeId] = @ 0)和[时间戳]为null)”,N '@ 0 BIGINT',@ 0 = 1
关于如何才能让它只能删除关系的任何想法?
干杯。