【问题标题】:Why didn't see 10 records in database?为什么在数据库中没有看到 10 条记录?
【发布时间】:2009-11-30 02:10:13
【问题描述】:

我使用 JMeter 来测试我的 Web 应用程序。 我的测试用例是在数据库中添加一条记录。 然后我将“线程用户数”设置为20,这意味着它将模拟20个用户同时工作。 然后我运行测试用例。 但是最后我发现系统并没有在数据库中创建20条记录,而是在数据库中创建了13条记录。

我想知道为什么会这样? 是否有可能因为在我的 Web 应用程序中我没有在添加记录方法前面添加“同步”?我使用linq,如果两个用户同时向服务器发布创建记录的请求,会发生什么?只创建一条记录还是可以成功创建两条记录,还是未知?

以下是在数据库中创建记录的示例代码:

       public int SaveEventGroup(int id, Models.Entities.EventGroup e, Nullable<int> setpublish)
    {
        try
        {
            Entities.EventGroup db;
            if (id == 0)
            {
                db = new Entities.EventGroup();
                db.CreatedBy = e.CreatedBy;
                db.CreateDatetime = DateTime.Now;
                db.Status = true;
            }
            else
            {
                db = this.GetEventGroup(id);
            }

            db.NameCN = e.NameCN;
            db.NameEN = e.NameEN;
            db.NameZH = e.NameZH;
            db.NamePT = e.NamePT;
            db.DisplayOrder = GetGroupMaxDisplayOrder() + 1;

            if (setpublish == null)
            {
                db.PublishStatus = false;
                db.PublishDatetime = null;
                db.UpdateDatetime = DateTime.Now;
                db.UpdatedBy = e.UpdatedBy;
            }

            if (id == 0)
                dataContext.AddToEventGroupSet(db);

            dataContext.SaveChanges();

            return db.Id;
        }
        catch (Exception ex)
        {
            log.Error(ex.Message, ex);
            throw ex;
        }
    }

【问题讨论】:

  • 能否把数据插入数据库时​​运行的SQL语句贴出来。
  • 另一个路过的帖子。你好,内存泄漏。发布您的 SQL!
  • 没有,我只是用Linq,没有SQL!
  • 那么,发布您的 Linq 代码怎么样?另外贴一点调用Linq代码的代码,方便大家看上下文。
  • 如果您使用数据库,总会有一些SQL,打开SQL Profiler 获取Linq 生成的SQL,然后将创建表的SQL 贴出来,也许我们可以帮助您。

标签: c# database linq jmeter performance-testing


【解决方案1】:

数据库本身应该是 ACID 兼容的,所以我怀疑在同步方面问题出在数据库上。如果您插入一条新记录并且该记录由诸如自动递增整数之类的东西作为键,除非您告诉它通过该 id 更新而不是插入新记录,否则数据库不会踩到它。但既然你不是在写 SQL,谁真的知道你在指示数据库做什么。

我建议从等式中删除 linq,然后手动编写。您正在测试的似乎是一个非常简单的“upsert”操作。

【讨论】:

  • 是的,但是如果我手动操作这些测试用例,那么一切正常,我很想为此找到解决方案
  • 听起来你需要看看 sql teh linq bits 会生成什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多