次の LinQ to entities クエリを T-SQL ステートメントとして記述する方法を探しています。
repository.ProductShells.Where(x => x.ShellMembers.Any(sm => sm.ProductID == pid)).ToList().ForEach(x => repository.ProductShells.Remove(x));
以下は明らかに正しくありませんが、変数に渡されたものと等しい ProductID が ShellMember に含まれているそれぞれの ProductShell オブジェクトを削除する必要がありますpid
。これには、関連する ShellMembers を取得するための結合ステートメントが含まれると思います。
repository.Database.ExecuteSqlCommand("FROM Shellmembers WHERE ProductID={0} DELETE FK_ProductShell", pid);
FK_ShellMembers_ProductShells 外部キーに対してカスケード削除を有効にしているため、ProductShell を削除すると、関連付けられているすべての ShellMembers が削除されます。このステートメントを System.Data.EntityDatabase.ExecuteSqlCommand
メソッドに渡します。