以下のモデルがあります。Entity Frameworkの多対多リレーションシップを削除するとエラーが発生します
私はActivityTypeを関連付けられた指定でProductTypeを削除しようとしています。しかし、私はジェネリックメソッドを介して削除を扇動しようとすると、その関係を削除するだけでなく、それもProductTypeを削除しようとしている!
"ストアの更新、挿入、または削除のステートメントが予期しない行数(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のthatsです:
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)および[タイムスタンプ]ヌルである)0 BIGINT @」、N ''、0 = 1
@どのように私はそれが関係を削除するだけで得ることができる任意のアイデア?
乾杯。