标签: dapper

有没有办法使用Dapper跟踪\ log sql?

有没有办法将生成的sql转储到Debug日志或其他什么?我在winforms解决方案中使用它,因此迷你探测器的想法对我不起作用.

dapper

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

如何用Dapper实现工作单元模式?

目前,我正在尝试使用Dapper ORM与工作单元+存储库模式.

我想使用工作单元而不是简单的dapper存储库,因为我的插入和更新需要一定程度的事务处理.我一直无法找到任何有用的例子,因为大多数似乎使用实体框架并且在工作单元内存在泄漏问题.

有人可以指点我正确的方向吗?

unit-of-work repository-pattern dapper

35
推荐指数
4
解决办法
3万
查看次数

使用c#代码中的dapper将输出参数传递给存储过程

我有这种格式的存储过程

CREATE PROCEDURE SP_MYTESTpROC
    @VAR1 VARCHAR(10),
    @VAR2 VARCHAR(20),
    @BASEID INT ,
    @NEWID INT OUTPUT
As Begin
   INSERT INTO TABLE_NAME(username, firstname)
      select @VAR1, @VAR2 
      WHERE ID = @BASEID

   SET @NEWID = SCOPE_IDENTITY() AS INT
END
Run Code Online (Sandbox Code Playgroud)

我使用dapper从C#代码调用此存储过程.我的问题是:如何在使用dapper时将输出参数传递给存储过程?

c# sql sql-server stored-procedures dapper

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

如何使用Dapper传递null参数

我有一个存储过程,其参数没有默认值,但可以为null.但我无法弄清楚如何使用Dapper传递null.我可以在ADO中做得很好.

connection.Execute("spLMS_UpdateLMSLCarrier", new { **RouteId = DBNull.Value**, CarrierId = carrierID, UserId = userID, TotalRouteRateCarrierId = totalRouteRateCarrierId },
                                        commandType: CommandType.StoredProcedure);
Run Code Online (Sandbox Code Playgroud)

例外:

System.NotSupportedException was caught
  Message=The member RouteId of type System.DBNull cannot be used as a parameter value
  Source=Dapper
  StackTrace:
       at Dapper.SqlMapper.LookupDbType(Type type, String name) in C:\Dev\dapper-git\Dapper\SqlMapper.cs:line 348
       at Dapper.SqlMapper.CreateParamInfoGenerator(Identity identity) in C:\Dev\dapper-git\Dapper\SqlMapper.cs:line 1251
       at Dapper.SqlMapper.GetCacheInfo(Identity identity) in C:\Dev\dapper-git\Dapper\SqlMapper.cs:line 908
       at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in C:\Dev\dapper-git\Dapper\SqlMapper.cs:line 532
       at Rating.Domain.Services.OrderRatingQueueService.UpdateLMSLCarrier(Int32 totalRouteRateCarrierId, Int32 carrierID, Int32 …
Run Code Online (Sandbox Code Playgroud)

dapper

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

简单的内连接结果与Dapper?

我似乎无法找到我的问题的文档或示例(现在已经搜索了一段时间).我认为我的问题很简单,所以这里就是这样.

我有两张桌子.我的主表名为Persons,辅助表名为PersonEntries.对于Person表中的每个人,我可以在PersonEntries表中有0个或更多个条目.像这样.

Table: Person
Id
Name

Table: PersonEntry
PersonId
CheckinTime
CheckoutTime
Run Code Online (Sandbox Code Playgroud)

我有两个像这样的对象

public class Person {
  public string Name;
  public List<PersonEntry> PersonEntries;
}

public class PersonEntry {
  public DateTime CheckinTime;
  public DateTime CheckoutTime;
}
Run Code Online (Sandbox Code Playgroud)

如果我是从数据库中获取它到我的c#类中我该怎么做?我可以将一个表映射到我的c#类中,并为每个表执行此操作,但随后我将匹配哪些条目映射到哪个人.

我已经看过几个将一个PersonEntry映射到一个Person的例子,这里的问题是我有一个从零到多的关系.我的人有一个PersonEntry项目列表.

dapper

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

有没有开始使用Dapper的好样本?

我正在尝试在现有的MVC3项目中开始使用Dapper,尽管它看起来非常容易使用,但我似乎找不到任何有关如何设置它的教程.任何链接或建议将受到高度赞赏.

非常感谢.

orm asp.net-mvc-3 dapper

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

插入带有Dapper错误的IEnumerable <T>集合,"Dapper不支持类".

是的,这里这里有关于如何使用dapper-dot-net插入记录的问题.然而,答案虽然提供了丰富的信息,但似乎并未将我指向正确的方向.情况如下:将数据从SqlServer移动到MySql.将记录读入一个IEnumerable<WTUser>很容易,但我只是没有在插入上得到一些东西.首先,'移动记录代码':

//  moving data
Dim session As New Session(DataProvider.MSSql, "server", _
                           "database")

Dim resources As List(Of WTUser) = session.QueryReader(Of WTUser)("select * from tbl_resource")


session = New Session(DataProvider.MySql, "server", "database", _
                      "user", "p@$$w0rd")

//    *edit* - corrected parameter notation with '@'
Dim strInsert = "INSERT INTO tbl_resource (ResourceName, ResourceRate, ResourceTypeID, ActiveYN) " & _
                "VALUES (@ResourceName, @ResourceRate, @ResourceType, @ActiveYN)"

Dim recordCount = session.WriteData(Of WTUser)(strInsert, resources)

//  session Methods
    Public Function QueryReader(Of TEntity As …
Run Code Online (Sandbox Code Playgroud)

c# vb.net insert dapper

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

使用Async Await关键字与Dapper

我想用一个微观的orm决定和Dapper一起去.

但似乎无法找到支持新的async/await语法的任何提及.异步查询对我很重要.

有人可以使用await关键字提供使用Dapper进行的异步查询的代码示例吗?

async-await dapper .net-4.5

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

导致"扩展方法无法动态调度"的原因在这里?

编译错误

'System.Data.SqlClient.SqlConnection'没有名为'Query'的适用方法,但似乎有一个名称的扩展方法.无法动态分派扩展方法.考虑转换动态参数或调用扩展方法而不使用扩展方法语法.

现在,我知道如何解决这个问题,但我正在努力更好地理解错误本身.我正在上课,以利用Dapper.最后,我将提供一些更多自定义功能,以使我们的数据访问类型更加简化.特别是在追踪和东西建设.但是,现在它就像这样简单:

public class Connection : IDisposable
{
    private SqlConnection _connection;

    public Connection()
    {
        var connectionString = Convert.ToString(ConfigurationManager.ConnectionStrings["ConnectionString"]);
        _connection = new SqlConnection(connectionString);
        _connection.Open();
    }

    public void Dispose()
    {
        _connection.Close();
        _connection.Dispose();
    }

    public IEnumerable<dynamic> Query(string sql, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, int? commandTimeout = null, CommandType? commandType = null)
    {
        // this one works fine, without compile error, so I understand how to
        // workaround the error
        return Dapper.SqlMapper.Query(_connection, sql, param, transaction, buffered, …
Run Code Online (Sandbox Code Playgroud)

.net c# extension-methods compiler-errors dapper

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

动态返回类型

我一直在使用Dapper.net一段时间,它是一个非常好的ORM映射器,它与.Net动态类型配合得很好.

但我注意到,当Dapper从数据库中检索数据时,它将返回Dapper行类型.

有什么方法可以让它以任何其他类型返回DapperRow吗?

.net c# orm dapper

31
推荐指数
3
解决办法
5万
查看次数