一括削除を容易にするためにExecuteStoreCommandを使用しています。
この作品
// ExecuteStoreCommand syntax via http://stackoverflow.com/a/13024320/740639
// Delete all of today's events
DateTime eventDate = DateTime.Now;
string sql = "DELETE FROM EventCalendar WHERE EventDate = {0}";
context.ObjectContext.ExecuteStoreCommand(sql, new object[] { eventDate });
これをやりたいのですが、うまくいきません
ArgumentException が発生しました:「オブジェクト タイプ System.DateTime[] から既知のマネージ プロバイダー ネイティブ タイプへのマッピングは存在しません。」
// Delete all of the events for the past 3 days
DateTime[] eventDates = new DateTime[] {
DateTime.Now.AddDay(-1),
DateTime.Now.AddDay(-2),
DateTime.Now.AddDay(-3)
};
string sql = "DELETE FROM EventCalendar WHERE EventDate IN ({0})";
context.ObjectContext.ExecuteStoreCommand(sql, new object[] { eventDates });
提案された解決策
DateTime[] を文字列 "'2013-06-24', '2013-06-23', '2013-06-22'" に変換し、それをパラメーターとして渡すことができましたが、それはハックのようです。
EF に一括削除のサポートを追加するライブラリがあることは知っていますが、現時点ではそのルートには行きたくありません。
助言がありますか?