相关疑难解决方法(0)

如何使用Dapper执行插入并返回插入的标识?

如何对数据库执行插入并使用Dapper返回插入的标识?

我尝试过这样的事情:

string sql = "DECLARE @ID int; " +
             "INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff); " +
             "SELECT @ID = SCOPE_IDENTITY()";

var id = connection.Query<int>(sql, new { Stuff = mystuff}).First();
Run Code Online (Sandbox Code Playgroud)

但它没有用.

@Marc Gravell谢谢你的回复.我已经尝试过你的解决方案但是,下面仍有相同的异常跟踪

System.InvalidCastException: Specified cast is not valid

at Dapper.SqlMapper.<QueryInternal>d__a`1.MoveNext() in (snip)\Dapper\SqlMapper.cs:line 610
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in (snip)\Dapper\SqlMapper.cs:line 538
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param) in (snip)\Dapper\SqlMapper.cs:line 456
Run Code Online (Sandbox Code Playgroud)

c# sql-server dapper

161
推荐指数
4
解决办法
9万
查看次数

如何在.NET中使用Dapper处理数据库连接?

我一直在玩Dapper,但我不确定处理数据库连接的最佳方法.

大多数示例显示在示例类中创建的连接对象,甚至在每个方法中.但是我觉得在每个clss中引用连接字符串都是错误的,即使它是从we​​b.config中提取的.

我的经验是使用DbDataContextDbContext使用Linq to SQL或Entity Framework,所以这对我来说是新的.

使用Dapper作为我的数据访问策略时,如何构建我的Web应用程序?

.net c# dapper

68
推荐指数
5
解决办法
7万
查看次数

IDisposable.Dispose()可以安全地多次调用吗?

IDisposable的实现是否可以安全地多次调用Dispose()?或者相反?大多数.NET Framework类采用什么方法?

具体来说,System.Data.Linq.DataContext.Dispose()多次通话是否安全?

我问的原因是因为我想知道是否需要这种额外保护:

public override void Dispose(bool disposing)
{
    // Extra protection...
    if (this.obj != null)
    {
        this.obj.Dispose();
        this.obj = null;
    }

    // Versus simply...
    this.obj.Dispose();

    base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)

在处理类的IDisposable成员时,或者我是否应该在this.obj.Dispose()不关心之前调用它的情况下调用它.

.net c# idisposable

41
推荐指数
2
解决办法
9727
查看次数

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

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

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

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

unit-of-work repository-pattern dapper

35
推荐指数
4
解决办法
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哪个交易更好:BEGIN TRAN或TransactionScope?

我刚刚开始使用Dapper,我想知道哪种交易模式会更好.

当我编写SQL时,我更喜欢使用脚本中已有的事务:

BEGIN TRAN

-- insert, update etc.

COMMIT
Run Code Online (Sandbox Code Playgroud)

因为它更容易测试它,但也有问题交易与dapper dot net 使用.net事务,所以现在我不确定我应该使用哪一个.

这两种方法都有不同的优势吗?

c# t-sql transactions dapper

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