相关疑难解决方法(0)

使用Dapper执行插入和更新

我对使用Dapper很感兴趣 - 但据我所知它只支持Query和Execute.我没有看到Dapper包含一种插入和更新对象的方法.

鉴于我们的项目(大多数项目?)需要进行插入和更新,在插入和更新的同时进行插入和更新的最佳做法是什么?

最好我们不必采用参数构建的ADO.NET方法等.

我现在能想出的最佳答案是使用LinqToSQL进行插入和更新.有更好的答案吗?

c# orm dapper

175
推荐指数
6
解决办法
18万
查看次数

澄清Dapper示例代码

我试图找到Dapper并且似乎缺少一些非常基础的东西,有人可以解释下面的代码来自Dapper主页上的Google代码并解释为什么没有From子句,以及第二个参数查询方法(动态)传递一个匿名类型,我收集这是以某种方式设置一个命令对象,但想用一个凡人的术语解释.

谢谢你,斯蒂芬

public class Dog {    
    public int? Age { get; set; }    
    public Guid Id { get; set; }    
    public string Name { get; set; }    
    public float? Weight { get; set; }    
    public int IgnoredProperty {
        get { return 1; }
    }
}

var guid = Guid.NewGuid();
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });            

dog.Count().IsEqualTo(1);
dog.First().Age.IsNull();
dog.First().Id.IsEqualTo(guid);
Run Code Online (Sandbox Code Playgroud)

c# dapper

12
推荐指数
1
解决办法
3261
查看次数

Dapper可用于更新和插入模型吗?

我一直在玩Dapper,试图看看它是否是Entity Framework的一个很好的轻量级替代品.到目前为止,我已经对它能够快速<model>从数据库中提取实体并将其转换为模型的IEnumerable,或者仅创建模型的单个实例留下了深刻的印象.非常光滑.

但是我没有看到的是将该模型更新回db的简单方法.

例:

public class Dog
{
    public Guid Id { get; set; }
    public int? Age { get; set; }
    public string Name { get; set; }
    public float? Weight { get; set; }
} 
Run Code Online (Sandbox Code Playgroud)

我们可以轻松地创建一个IEnumerable of Dog,如下所示:

IEnumerable<Dog> dogs = connection.Query<Dog>("SELECT * FROM Dog")
Run Code Online (Sandbox Code Playgroud)

或者,对于单个实例:

Dog dog = connection.Query<Dog>("SELECT * FROM Dog WHERE DogId = @dogid")
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是现在,如果我们对"dog"进行更改(比如说,改变它的重量),是否有一种灵活,快速,简单的方法可以将该实体重新放回数据库而无需进行手动UPDATE查询,列出每个字段?

谢谢!

.net c# sql dapper

7
推荐指数
2
解决办法
8118
查看次数

Dapper:将行插入表变量

我最近一直在使用dapper,总而言之,除了使用表变量之外,它没有任何问题。

为了进行演示,我使用了此线程中的修改示例。

这段代码运行没有问题:

int tally = connection.Execute(
    "create table #t(Name nvarchar(max), Age int)\n" +
    "insert #t (Name,Age) values(@Name, @Age)", new[]
    {
        new {Age = 1, Name = "sam"},
        new {Age = 2, Name = "bob"}
    });
Run Code Online (Sandbox Code Playgroud)

但这并没有:

int tally = connection.Execute(
    "create table @t(Name nvarchar(max), Age int)\n" +
    "insert @t (Name,Age) values(@Name, @Age)", new[]
    {
        new {Age = 1, Name = "sam"},
        new {Age = 2, Name = "bob"}
    });
Run Code Online (Sandbox Code Playgroud)

唯一的变化是使用表变量而不是临时表 ( @ instead #)。Dapper(或链中的其他任何东西?)似乎以某种方式将其与参数混合并返回“必须声明表变量@t …

c# sql insert table-variable dapper

6
推荐指数
2
解决办法
6999
查看次数

标签 统计

c# ×4

dapper ×4

sql ×2

.net ×1

insert ×1

orm ×1

table-variable ×1