クエリ変数を調べてこれらのコード行をデバッグすると、System.Data.EntityExceptionが表示されます。
データリーダーは、指定された「UnitId」と互換性がありません。タイプ'ITMS.Unit'のメンバーには、同じ名前の対応する列がデータリーダーにありません。
var query = context.Units.SqlQuery("WITH x(Id) AS
(SELECT @UnitId UNION ALL SELECT Unit.UnitId
FROM Unit JOIN x ON Unit.ParentId = x.Id ) " +
"DELETE Unit FROM x JOIN Unit ON Unit.UnitId = x.Id",
new SqlParameter("UnitId", unit.UnitId));
SqlManagementStudioで実行される生のSQLは正常に実行されます。
このデータリーダーの問題は何ですか?うーん...実際に私は選択を行いますが、その後削除...これは非クエリです。それが問題ですか?ところで。私は最初にコードを使用します。
アップデート
例外メッセージを更新して修正しました。
SqlParameter名「@UnitId」に@記号を追加しても効果はありませんでした。
この例外は発生しますが、UnitIdとその子は削除されます!!!
他の誰かが同じ問題を抱えているようです:http ://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/17bdad58-93dd-4ba8-8a60-5177f3ce4a88