我正在使用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'" 并将其作为参数传递,但这似乎是一个 hack。
我知道有些库向 EF 添加了批量删除支持,但我现在不想走这条路。
有什么建议么?