2016-06-16 9 views
0

トートを作成し、ユーザーの入力に応じてトート内にバッチを作成するアプリケーションがあります。私たちは、バッチ用のデータベースへの挿入レコードが最初のレコードの.01秒以内に重複レコードを作成するランダムな時間があることを発見しました。C#MVC 5、EF 6、SQLデータベースへの重複レコード書き込み

これは、我々は、バッチレコードを挿入するために使用するコードです:

batch.Date = DateTime.Now; 
batch.User = User.Identity.Name.Split('\\')[1]; 
batch.Active = true; 
batch.Tote = tote; 
database.Batches.Add(batch); 
database.SaveChanges(); 

これは、我々が随時参照レコードです:

1436 2016-06-14 12:41:28.617 Shipment 26 False Part123 822 NULL 

1435 2016-06-14 12:41:28.600 Shipment 26 True Part123 822 NULL 

1434 2016-06-14 12:40:38.520 Shipment 4 False Part123 822 NULL 

注:レコードのタイムスタンプを注意しています.017秒以内に発生しました。真ん中のレコードは、すべての部品が前記バッチにスキャンされると、完全なものとしてマークされるため、真です。

他に誰かがこの問題に遭遇しましたか?私はそれがネットワーク関連の問題、EF6、またはSQLかどうかはわかりません。すべての入力をいただければ幸いです!

ビューコード:

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    <input type="hidden" value="@ViewBag.ToteID" id="toteID" /> 
    <div class="form-horizontal"> 
     <h4>New Small Lot</h4> 
     <hr /> 
     <div class="form-group"> 
      @Html.LabelFor(model => model.PartNum, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.PartNum, new { htmlAttributes = new { @Value = "", onkeydown = "RemoveDollarSign(this);RemoveCreateBatchPartIdentifier(this)" } }) 
      @Html.ValidationMessageFor(model => model.PartNum, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Quantity, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Quantity, new { htmlAttributes = new { @Value = "", onkeydown ="RemoveQuantityIdentifier(this);TabtoSubmit(this)"} }) 
      @Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" }) 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Submit" class="btn btn-primary" /> 
     </div> 
    </div> 
</div> 

}

JavaScriptは:

function RemoveCreateBatchPartIdentifier(i) { 
    i.value = i.value.replace(/^[Pp]/, ''); 
}; 
function RemoveQuantityIdentifier(i) { 
    i.value = i.value.replace(/[^0-9]/g, ''); 
}; 
function RemoveDollarSign(i) { 
    i.value = i.value.replace(/[$]/g, ' '); 
}; 
function TabtoSubmit(i) { 
    if (event.which == '9') 
    { 
     i.form.submit(); 
    } 
+0

複数のレコードを挿入する方法をもう少し詳しく説明してください。 1レコードの挿入コードは多くの手がかりを与えません。 –

+0

はあなたのViewコードを表示します。あなたはajax経由でサーバーにデータを送りますか?それらのものは複数入力することができます – MRebati

+0

あなたのコントローラコードは良いです。クライアント側で問題が発生する可能性があります。 – MRebati

答えて

0

問題は、自己のサーバの更新/再起動後に解決されました。私は答えとしてこれが好きではないが、シンプルなサーバーのアップデートや再起動で消えてしまった。近い将来にこれを見ている人にとっては、他のすべての要因が一貫していました。

関連する問題