标签: dapper

在Dapper中有一个ExecuteScalar

看起来Dapper中有一个ExecuteScalar ......

http://code.google.com/p/dapper-dot-net/issues/attachmentText?id=22&aid=220000000&name=ExecuteScalar.cs&token=9e2fd8899022f507b140ffb883c60e34

是否重命名或删除了ExecuteScalar?

现在可以用.Query或.Query <T>来实现吗?

c# dapper

25
推荐指数
2
解决办法
3万
查看次数

使用BeginTransaction和Dapper.IDbConnection的正确方法

这是使用的正确方法是BeginTransaction()IDbConnection在小巧玲珑的?

我创建了一个必须使用的方法BeginTransaction().这是代码.

using (IDbConnection cn = DBConnection)
{
    var oTransaction = cn.BeginTransaction();

    try
    {
        // SAVE BASIC CONSULT DETAIL
        var oPara = new DynamicParameters();
        oPara.Add("@PatientID", iPatientID, dbType: DbType.Int32);
        ..........blah......blah............
    }
    catch (Exception ex)
    {
        oTransaction.Rollback();
        return new SaveResponse { Success = false, ResponseString = ex.Message };
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行上面的方法 - 我有一个例外 -

操作无效.连接已关闭.

这是因为在打开连接之前无法开始事务.所以当我添加这一行:时cn.Open();,错误得到解决.但我已经读过某个地方,手动打开连接是不好的做法!! Dapper仅在需要时才打开连接.

在Entity框架中,您可以使用a处理事务TransactionScope.

所以我的问题是cn.Open()...在没有在Dapper中添加行来处理事务的好习惯是什么?我想应该有一些正确的方法.

.net c# orm idbconnection dapper

25
推荐指数
2
解决办法
3万
查看次数

使用异步Dapper方法取消语句?

我正在使用Nuget的Dapper 1.31.我有这个非常简单的代码片段,

string connString = "";
string query = "";
int val = 0;
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (IDbConnection conn = new SqlConnection(connString))
{
    conn.Open();
    val = (await conn.QueryAsync<int>(query, tokenSource.Token)).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

当我按下F12QueryAsync,它指向我

public static Task<IEnumerable<T>> QueryAsync<T>
     (
        this IDbConnection cnn, 
        string sql, 
        dynamic param = null, 
        IDbTransaction transaction = null, 
        int? commandTimeout = null, 
        CommandType? commandType = null
     );
Run Code Online (Sandbox Code Playgroud)

CancellationToken它的签名没有.

问题:

  • 假设整个解决方案中没有编译器错误,为什么代码段完全可构建?
  • 原谅我,因为我无法测试调用tokenSource.Cancel()是否真的取消了该方法,因为我不知道如何生成长时间运行的SQL查询.请问.Cancel()真的取消方法,并抛出OperationCancelledException

谢谢!

.net c# async-await dapper cancellation-token

24
推荐指数
1
解决办法
4752
查看次数

有没有办法通过字符串或索引访问Dapper FastExpando中的列?

我正在Dapper FastExpando引入一个对象,并希望能够在运行时而不是在设计/编译时动态引用列名.所以我希望能够做到以下几点:

var testdata = conn.Query("select * from Ride Where RiderNum = 21457");
Run Code Online (Sandbox Code Playgroud)

我希望能够做到以下几点:

foreach( var row in testdata) {
    var Value = row["PropertyA"];
}
Run Code Online (Sandbox Code Playgroud)

我明白我能做到:

var Value = row.PropertyA;
Run Code Online (Sandbox Code Playgroud)

但我不能这样做,因为我将需要的属性名称直到运行时才会知道.

这个SO问题的答案不起作用.我仍然得到同样的Target Invocation例外.所以...

有没有办法用Dapper FastExpando做我想做的事情?

c# dynamic dapper

23
推荐指数
1
解决办法
9861
查看次数

为什么Dapper dot net不打开并关闭连接本身?

Dapper隐含地期望连接在使用时打开.为什么不自己打开和关闭它?这不是简单的连接管理吗?

我问,因为我和同事一直在寻找有关连接池的幕后故事的性质,以及如何在多个命令之间保持连接打开,或打开和关闭它有任何好处对于每个命令.

.net connection-pooling sqlconnection dapper

23
推荐指数
1
解决办法
1万
查看次数

如何在Dapper中使用'Where In'

我一直尝试在Dapper中使用IEnumerable<string>with WHERE IN子句一段时间没有成功.

在文档中,它确实表示IEnumerable<int>支持在a中使用,WHERE IN但我甚至无法使其工作.

Dapper allow you to pass in IEnumerable<int> and will automatically parameterize your query.

我一直收到的错误消息是Sql语法错误. Incorrect syntax near ','.

我已经整理了一些测试代码,希望能够展示我想要实现的目标.


string connString = "Server=*.*.*.*;Database=*;User Id=*;Password=*;";

string sqlStringIn = @"SELECT StringText FROM 
                (SELECT 1 ID, 'A' StringID, 'This is a test' StringText
                UNION SELECT 2 ID, 'B' StringID, 'Another test' StringText
                UNION SELECT 3 ID, 'C' StringID, 'And another' StringText
                UNION SELECT 4 ID, 'D' StringID, 'and again' StringText
                UNION …
Run Code Online (Sandbox Code Playgroud)

.net c# sql orm dapper

23
推荐指数
1
解决办法
1万
查看次数

如何在映射时让Dapper忽略/删除字段名称中的下划线?

有很多方法可以将数据库字段名称映射到类名,但是删除下划线的最简单方法是什么?

    public IEnumerable<PersonResult> GetPerson(int personId)
    {
        using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ))
        {
            IEnumerable<PersonResult> result =
                dbConnection.Query<PersonResult>("fn_get_person", new { personId },
                    commandType: CommandType.StoredProcedure).ToList();

            return result;
        }
    }
Run Code Online (Sandbox Code Playgroud)

表和数据库字段:

person
-------- 
person_id
full_name
Run Code Online (Sandbox Code Playgroud)

有效的类:(小巧玲珑已经忽略大写)

public class PersonResult
{    
    public int Person_Id { get; set; }
    public string Full_Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想把课程改为:

public class PersonResult
{    
    public int PersonId { get; set; }
    public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

mapping postgresql dapper

23
推荐指数
1
解决办法
5235
查看次数

使用dapper访问Mysql

我是.NET的新手.我有兴趣使用Dapper micro-ORM从ASP .NET应用程序访问MySQL后端.

可以这样做吗?开始时我需要知道什么?

c# mysql asp.net dapper

22
推荐指数
1
解决办法
2万
查看次数

我可以为dapper-dot-net映射指定DB列名吗?

有没有办法使用dapper-dot-net来使用属性来指定应该使用的列名而不是属性名?

public class Code
{
    public int Id { get; set; }
    public string Type { get; set; }
    // This is called code in the table.
    public string Value { get; set; }
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

无论我选择什么,我都希望能够命名我的房产.我们的数据库没有一致的命名约定.

如果没有小巧玲珑,还有其他类似的选择吗?

c# database dapper

22
推荐指数
2
解决办法
2万
查看次数

如何使用.Net中的dapper ORM回退复杂对象中的所有父/子数据

我在数据库中有这两个表与一个(类别)到多个(产品)关系

Table Product
    Name
    Description
    ProductCategory

Table Category
    Category
    Description
Run Code Online (Sandbox Code Playgroud)

而这些课程;

public class Product
{
  public string Name { get; set; }
  public string Description { get; set; }
  public Category CategoryName { get; set}    
}


public class Category
{
  public string CategoryName { get; set; }
  public string Description { get; set; }    
}
Run Code Online (Sandbox Code Playgroud)

我想在列表中找到包含所有产品和类别对象数据的列表.我已经阅读了关于multipleResults和queryMultiple但是看不到如何将两者结合在一起.我知道如何为单个产品做到这一点但是所有具有各自类别对象的产品也是如此.

c# multiple-resultsets dapper

22
推荐指数
2
解决办法
1万
查看次数