使用Dapper ORM检查记录是否存在的最简单方法是什么?
我是否真的需要为查询定义POCO对象,我只想检查记录是否存在?
答案 0 :(得分:35)
int id = ...
var exists = conn.ExecuteScalar<bool>("select count(1) from Table where Id=@id", new {id});
应该有用......
答案 1 :(得分:4)
我认为由于没有函数调用或数据类型转换,这可能会有更少的开销:
int id = ...
var exists = connection.Query<object>(
"SELECT 1 WHERE EXISTS (SELECT 1 FROM MyTable WHERE ID = @id)", new { id })
.Any();
答案 2 :(得分:2)
您可以让您的查询返回bool:
{{1}}
答案 3 :(得分:2)
const string sql = "SELECT CAST(CASE WHEN EXISTS (SELECT 1 FROM MyTable WHERE Id = @Id) THEN 1 ELSE 0 END as BIT)";
bool exists = db.ExecuteScalar<bool>(sql, new { Id = 123 });
答案 4 :(得分:0)
将使用重复记录运行的另一个选项,即不查询表的id
public void RemoveItem(int i)
{
// Removes rows with index i
myBindingList.RemoveAt(i)
}
答案 5 :(得分:0)
如果您需要针对非唯一字段执行此类查询,则可以使用HAVING
处理大于1的计数。
SELECT 1
FROM Table
WHERE Col=@val
HAVING COUNT(1) > 0
答案 6 :(得分:0)
恕我直言SELECT TOP(1)
比SELECT COUNT(1)
更好
bool exists = connection.Query<ValueTuple<long>>(
"SELECT top(1) Id FROM MYTABLE WHERE MYTABLE.Id=@Id",
new {Id}).Any());
ValueTuple<long>
是值类型。 Query<object>
映射到引用类型并引起装箱。
答案 7 :(得分:0)
const data = [
{
title: 'What is Html',
content:
'HTML stands for HyperText Markup Language. HTML is the basic building block of World Wide Web.',
},
]