【发布时间】:2016-03-24 13:34:06
【问题描述】:
我一直在使用 Dapper,试图看看它是否是 Entity Framework 的一个很好的轻量级替代品。到目前为止,我对它能够快速从数据库中提取实体<model> 并将其放入模型的 IEnumerable 或仅创建模型的单个实例的能力印象深刻。非常光滑。
但我没有看到将模型更新回数据库的简单方法。
例子:
public class Dog
{
public Guid Id { get; set; }
public int? Age { get; set; }
public string Name { get; set; }
public float? Weight { get; set; }
}
我们可以很容易地创建一个 Dog 的 IEnumerable,如下所示:
IEnumerable<Dog> dogs = connection.Query<Dog>("SELECT * FROM Dog")
或者,对于单个实例:
Dog dog = connection.Query<Dog>("SELECT * FROM Dog WHERE DogId = @dogid")
这一切都很好。但是现在,如果我们对“狗”进行更改(例如,只是更改它的重量),是否有一种巧妙、快速、简单的方法可以将该实体返回到数据库中,而无需执行手动 UPDATE 查询,列出每个字段?
谢谢!
【问题讨论】:
-
看来传递
List<T>应该insert multiple items?顺便说一句,坚持参数化查询 (SELECT * FROM Dog WHERE DogId = @DogId),除非你喜欢 sql 注入攻击。 -
该语法如何工作?在查看 GitHub 上的自述文件时,我没有看到这样的示例。 github.com/StackExchange/dapper-dot-net
-
大概像我链接到的答案:
connection.Execute(@"update Dog set Name=@Name, Age=@Age", list);? -
啊抱歉,我完全错过了您评论中的链接
-
是的,您对参数化查询是正确的。在我的例子中我很懒