相关疑难解决方法(0)

.NET中的TransactionScope错误?更多信息?

我已经阅读过(或者从同事那里听到)在.NET中,TransactionScope可以达到超时,然后是VoteCommit(而不是VoteRollback).这是准确还是传闻?我无法在网上找到谈论这个问题的信息(如果这是一个问题),所以我想知道是否有人有任何直接的经验,可以解决一些问题?

.net c# transactions

23
推荐指数
2
解决办法
5444
查看次数

将DB Connection对象传递给方法

想知道是否建议传递数据库连接对象(到其他模块)或让方法(在另一个模块中)负责设置它.我倾向于让方法设置它,以便在使用之前不必检查连接的状态,只是让调用者将任何所需的数据传递给设置连接所需的调用方法.

.net c# ado.net database-connection

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

Transaction和TransactionScope之间的区别

我正在开发一个与SQL Server 2005数据库通信的应用程序来执行一些存储过程.我的客户端要求所有事务都在C#端管理,而不是由SQL Server管理,因此我System.Transactions.TransactionScope在访问数据库时使用.但是,我刚看到System.Transactions.Transaction数据类型,我很困惑......每种类型的主要优点/缺点是什么?我应该使用哪一个?

请注意,我还必须使用Enterprise Library的数据访问应用程序块.

c# transactions sql-server-2005 transactionscope

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

我可以先在一个t-SQL事务中选择SELECT然后删除记录吗?

我无法弄清楚这是否是可接受的操作.我需要从SQL Server 2008数据库中选择记录然后删除它们,所有这些都是ASP.NET代码中的单个事务.请注意,.NET代码必须能够检索首先选择的数据.

这样的东西:

SELECT * FROM [tbl] WHERE [id] > 6;
DELETE FROM [tbl] WHERE [id] > 6
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用SQL Fiddle,但如果我这样做:

SELECT * FROM [tbl]
Run Code Online (Sandbox Code Playgroud)

我得到了完整的表格,好像没有删除任何内容.

编辑按照下面的要求,这里是检索记录的完整.NET代码:

string strSQLStatement = "SELECT * FROM [tbl] WHERE [id] > 6;" +
    "DELETE FROM [tbl] WHERE [id] > 6";

using (SqlCommand cmd = new SqlCommand(strSQLStatement, connectionString))
{
    using (SqlDataReader rdr = cmd.ExecuteReader())
    {
        while(rdr.Read())
        {
            //Read values
            val0 = rdr.GetInt32(0);
            val3 = rdr.GetInt32(3);
            //etc.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2008

9
推荐指数
1
解决办法
5432
查看次数

Sql Transaction - SQL Server还是C#?

我是否正确地说从性能角度来看,sql事务在存储过程中比代码好得多?

目前我在存储过程中使用了大部分事务,但有时我使用代码来处理更复杂的例程 - 显然我尽可能地保持最小化.

只是有一个复杂的例程需要太多的"变量",在c#中编写sql事务要比使用SQL Server容易得多.这是代码可读性和性能之间的界限.

有任何想法吗?

c# sql-server transactions

7
推荐指数
1
解决办法
3263
查看次数

代码与DB的交易效率

什么更有效 - 在.net代码中使用IDbTransaction或在数据库中处理它?为什么?

应该使用哪两种可能的场景?

.net c# database

5
推荐指数
1
解决办法
451
查看次数

asp.net-identity交易问题

我想在同一个事务中创建一个具有角色的用户,但我对实现有一个问题.为了在事务中使用userStore并让它不自动保存更改并忽略我的事务,我必须关闭AutoSaveChanges.这使它等到我调用保存更改.这工作正常,但因为当我调用manager.Create时,用户现在不会返回userId,因为这是关闭我没有ID传递到userManager.AddToRole.有没有办法将我想要创建的用户添加到同一事务中的角色?

asp.net transactions asp.net-identity

5
推荐指数
1
解决办法
1314
查看次数

多方法上的单个sql事务

模块化编程是正确的方法,但它有时会导致需要额外努力和研究的问题.我有三个数据库插入函数,比如InsertName(),InsertAddress(),InsertPhoneNo()以它为例.如果在任何函数中发生异常,则必须执行所有这些函数,不会对数据库进行任何更改.

我能做的就是合并所有三合一并使用sqltransaction.

InsertDetails()
{
using (SqlTransaction sqlTransaction = cn.BeginTransaction()) 
    {
      using (SqlCommand cm = new SqlCommand()) 
      {
        cm.Transaction = sqlTransaction;
        InsertName();//Code to insert name   
        Insertaddress();//code to insert address
        InsertPhoneNo();//code to insert phone no
      }
      sqlTransaction.Commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

但上面的解决方案违背了我的模块化方法.是否可以将多个函数绑定到一个sql事务而不合并它们,如果不是哪种方法可以实现这一点.

c# sql database sqltransaction

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

交易范围详细,具有如此多的交易及其优势

我一次性完成了20多笔交易.我想用事务范围.可能吗?如果可能,那么使用transacation范围类比简单事务有什么好处.

使用事务范围的最佳做法是什么?

c# asp.net

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

@Transactional等效于C#和DDD应用程序服务的并发性

我正在阅读Vaughn Vernon关于实现领域驱动设计的书.我也经历过他的github中书代码C#版本.

这本书的Java版本有装饰器@Transactional,我相信它来自spring框架.

public class ProductBacklogItemService
{
    @Transactional
    public void assignTeamMemberToTask(
        string aTenantId,
        string aBacklogItemId,
        string aTaskId,
        string aTeamMemberId)
        {
            BacklogItem backlogItem =
                backlogItemRepository.backlogItemOfId(
                    new TenantId(aTenantId),
                    new BacklogItemId(aBacklogItemId));

            Team ofTeam =
                teamRepository.teamOfId(
                    backlogItem.tennantId(),
                    backlogItem.teamId());

            backlogItem.assignTeamMemberToTask(
                new TeamMemberId(aTeamMemberId),
                ofTeam,
                new TaskId(aTaskId));
        }
}
Run Code Online (Sandbox Code Playgroud)

C#中的等效手动实现是什么?我正在考虑以下几点:

public class ProductBacklogItemService
{
    private static object lockForAssignTeamMemberToTask = new object();
    private static object lockForOtherAppService = new object();

    public voice AssignTeamMemberToTask(string aTenantId,
        string aBacklogItemId,
        string aTaskId,
        string aTeamMemberId)
        {
            lock(lockForAssignTeamMemberToTask)
            {
                // application …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns domain-driven-design

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