無効な入力フィールドをDBで満たす最もクリーンな方法

私はユーザーがデータベースに格納されたアイテムの目録に追加できるようにフォームを作成しました。インベントリテーブルの各項目は、自動インクリメント、編集不可能、効果的に自動生成されたUIDに関連付けられています。

フォームの一番上のフィールドはItemIDで、入力が無効になっており、追加しようとしている新しいアイテムのIDをユーザーに通知するだけです。

理想的には、ここに擬似コードがあります:

<input type="text" name="email" value="<% (SELECT Max(ItemID) FROM dbo.Inventory).ToInt32 + 1 %>" disabled="disabled"/>

私はLinq to SQL ORMをすでに設定しています。これはMVCですべて行われているので、フォームのコントローラー内で正しい値を見つけてビューに直接渡すという考えが私にはありました。

これを達成する最もクリーンでシンプルな方法は何でしょうか?私は理想的には、 "値"フィールドは1行以上でなければならないと思います。

1

1 答え

このアプローチはうまくいきません。

ItemID が自動増分フィールドの場合、どのコンポーネントがその値を増やしますか?どこでもデータベースは問題に遭遇します。入力フィールドに値を入力すると、その時点で使用可能な値その時を取るときに、データベースに割り当てられたフィールドを使用すると仮定します。 2つの書式が読まれて順番どおりに提出されない場合はどうなりますか?値フィールドに入力したIDは、データベースが割り当てるIDと一致しません。したがって、これは一度に1人のユーザーにのみ有効です。

ID列を使用して実際のDB挿入を行い、これを手動で行うことやIDを予測することを心配することなく、値フィールドをこのように設定しないと、DBに値を割り当てることをお勧めします。

0
追加された