Frage

Ich JMeter verwenden, um meine Web-Anwendung zu testen. und mein Testfall ist eine Aufzeichnung in der Datenbank hinzuzufügen. und dann habe ich die „Anzahl der Gewinde Benutzer“ bis 20, bedeutet dies, dass es simulieren 20 Benutzer gleichzeitig arbeiten. und dann laufe ich den Testfall. Aber schließlich fand ich das System nicht schaffen 20 Datensätze in der Datenbank, sondern erstellen nur 13 Datensätze in der Datenbank.

Ich möchte wissen, warum dies passiert ist? Ist es möglich, dass da in meiner Web-Anwendung ich hinzufügen nicht ein „synchronisiert“ vor dem Hinzufügen von Datensätzen Methode? Früher habe ich Linq, Wenn zwei Benutzer eine Anfrage veröffentlichen, einen Datensatz zu Server zur gleichen Zeit zu schaffen, was passieren wird? Erstellen Sie einfach einen Datensatz oder können zwei Datensätze erfolgreich erstellen oder unbekannt?

Im Anschluss ist der Beispielcode für erstellen einen Datensatz in der Datenbank:

       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;
        }
    }
War es hilfreich?

Lösung

die Datenbank selbst sollte ACID-konform sein, so bezweifle ich, das Problem mit der Datenbank ist, wenn es um die Synchronisation kommt. wenn Sie einen neuen Datensatz einfügen und diese Aufzeichnung wird durch so etwas wie eine automatisch inkrementierende Ganzzahl eingegeben, wird die Datenbank gehen stampfen nicht auf, dass, wenn Sie es sagen, der durch die ID zu aktualisieren, anstatt einen neuen Datensatz einfügen. aber da Sie nicht die SQL zu schreiben, der wirklich weiß, was Sie die Datenbank anweisen zu tun.

Ich würde vorschlagen, Linq aus der Gleichung zu entfernen und diese manuell zu schreiben auf. was Sie testen scheint ein sehr einfacher „Upsert“ Betrieb zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top