Ordersという名前のテーブルには、作成時にランダムに生成する文字列を格納するOrderCodeという名前の列があります。ASP.NET MVCアプリケーション内のテーブル内の単一列の文字列を検索
テーブルに保存する前に、この文字列(OrderCode)が一意であることを確認します。 - しかし、私はない文字列を検索する必要が午前
bool isUnique = false;
var order = new Order();
var code = RandomCode.Generate();
while (isUnique == false) // checks to see if the code we generated is unique among all generated codes, if not, will generate another code
{
var activeOrders = storeDB.Orders.Find("OrderCode", code);
if (activeOrders == null)
{
isUnique = true;
}
else
{
code = RandomCode.Generate();
}
}
order.OrderCode = code;
問題がDbSet<TEntity>.Find
方法が実際に主キーを検索するために使用されていることのように見える:私はこれを行うことを試みてきた方法
主キー。
この状況にはどのような正しいアプローチがありますか?
GuidをOrderCodeに使用しないでください。これは、一意であることをかなり保証していますか? –
Guidを使用して7文字の長いコードを作成できますか? – Ecnalyr
Guidは、base64エンコーディングを使用して22文字まで取得できます。 7つの文字は一意のコードを保証するのがかなり難しいです。人間が扱えるものが欲しいという理由でこれが小さければ、10文字にすることをお勧めします。人々は電話番号を覚えることができます。 –