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();
}
複数のレコードを挿入する方法をもう少し詳しく説明してください。 1レコードの挿入コードは多くの手がかりを与えません。 –
はあなたのViewコードを表示します。あなたはajax経由でサーバーにデータを送りますか?それらのものは複数入力することができます – MRebati
あなたのコントローラコードは良いです。クライアント側で問題が発生する可能性があります。 – MRebati