【发布时间】:2015-02-01 02:21:09
【问题描述】:
我正在使用 Simple.Data 作为我的 Micro-ORM,我想实现一些可能或不可能实现的目标.. 我想对其中一列与变量列表匹配的表进行删除,因此有效地 SQL 将类似于:
DELETE FROM [Albums] WHERE Genre IN ("Rock", "Pop")
这可能吗?我尝试了一些方法,例如:
db.Albums.DeleteByGenre(new[] { "Rock", "Pop" });
db.Albums.DeleteAll(db.Albums.Genre == new[] { "Rock", "Pop" });
var genres = new List<string> { "Rock", "Pop" }
db.Albums.DeleteAll(db.Albums.Genre == genres);
不运行,因为在运行 SQL 配置文件时我看不到任何生成的查询。开始认为唯一的选择是逐一循环调用DeleteBy 的流派集合?
编辑:
我遇到的问题不是 Simple.Data 问题。以上将起作用,我使用过:
var genreList = new List<string> { "Rock", "Pop" };
db.Albums.DeleteByGenre(genreList);
您也可以使用:
db.Albums.DeleteAll(db.Albums.Genre == genreList);
我个人更喜欢第一个选项:)
【问题讨论】:
-
不确定 Simple.Data 是否支持它,但逻辑上等同于
IN ("Rock", "Pop")将是db.Albums.DeleteAll(genres.Contains(db.Albums.Genre)) -
查看我对 Stefan 的评论,它也适用于这个建议。谢谢:)
-
更新了我的答案。似乎我遇到了另一个问题
标签: c# sql orm simple.data