【问题标题】:data is not coming from DB even there is data in the table, ORM is Dapper即使表中有数据,数据也不是来自数据库,ORM 是 Dapper
【发布时间】:2018-01-18 12:06:14
【问题描述】:

我遇到了一个奇怪的问题,我不确定代码发生了什么,昨天它运行良好。 我在表中有数据,并且正在使用下面的函数从数据库中检索它。我正在使用我的 SQL。当应用程序启动时,数据会正确获取,但是一旦我们多次访问 DB 以获得一些牵引力,例如保存/更新/删除。它停止从 DB 获取记录,或者您可以说它停止与 DB 通信,但它正在建立连接。我已经证实了这一点。

下面是我的代码:

 public List<AcademyTeamsEntity> GetAcademyTeams(int academyId)
    {
        using (IDbConnection db = new MySql.Data.MySqlClient.MySqlConnection(ClsConnectionString.connectionString))
        {
            string query = @"SELECT * FROM academyteams where AcademyId=" + academyId + " order by CategoryId asc ";

            return db.Query<AcademyTeamsEntity>(query, commandType: System.Data.CommandType.Text).ToList();
        }
    }

请建议我犯了什么错误。提前致谢。

【问题讨论】:

  • 你能添加保存/更新/删除方法吗?交易似乎有问题。也许事务级别设置为可序列化并开始,但从未完成?
  • 请使用参数 - dapper 让这如此简单...where AcademyId=@academyId order by ... 并将new { academyId } 作为第二个参数传递给Query&lt;T&gt;(返回阅读实际问题);补充小点:CommandType.Text 不需要指定,.AsList() 应该优先于.ToList()
  • @MarcGravell,是的,我知道,感谢您的输入,我更改了测试,实际上我使用的格式与您所说的相同。
  • 如果你这样做int count = db.QuerySingle&lt;int&gt;("select count(1) from academyteams") - 它会得到什么?同样,如果您这样做 var firstFew = db.Query&lt;AcademyTeamsEntity&gt;("select top 10 * from academyteams").AsList(); ?基本上,我要排除的是:它是否正确 - 即数据不再存在吗?您的 CRUD 工作是否有可能删除了您认为正在获取的数据?编辑:在 MySQL 语法中可能是 select * from academyteams limit 10
  • @MarcGravell,好的,让我试试,但我也面临这个问题的小清单...... :(

标签: mysql asp.net asp.net-mvc connection dapper


【解决方案1】:

看起来交易有问题。

也许事务级别设置为可序列化。它会锁定所有数据直到完成,并且在使用保存/更新/删除方法发送几个请求后您会陷入死锁。

检查您的事务是否始终完成或在出现问题时回滚,以及您关闭所有与事务方法中的 db 的连接和事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2016-06-29
    相关资源
    最近更新 更多