1

CodeFirstEntityFrameworkデータベースがあります。自分でGUIDを生成していますが、モデルでは次のように定義されています。

    [Required, Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
    public string BatchId { get; set; }

私の目標-GUIDがデータベースにまだ存在しないことを最初に検証し、次に一意のGUIDが見つかるまで必要に応じて新しいGUIDを作成する方法はありますか?

4

3 に答える 3

2

これはではなくGuidstring;です。として宣言することをGuidお勧めします。そうすれば、心配する必要はありません。

実際にはGuid、同じマシンで同じものが2回生成されることはありません。したがって、プロパティを次のように変更しても心配する必要はありません。

[Required, Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
    public Guid BatchId { get; set; }
于 2013-02-05T16:01:08.057 に答える
1

必ず最初にDBを読んで、必ず確認してください。しかし、E = MC^2またはあなたのお金が戻ってきます。

Context.DbSet.find(MyGuid);

いいえ、見つかりません.... Guid.New();を使用している場合は、重複が発生したときにお知らせください。

ところで、gUidまたはタイプGuid / DBType UniqueIdentierに文字列を使用する予定はありますか?その場合は、選択したタイプを再検討する必要があります。

于 2013-02-05T16:05:31.493 に答える
0

これが私が自分で作った古いコードです:

private static IQueryable<MyData> FetchFromDatabase(MyContainer context, Guid guid)
{
    if (!context.DatabaseExists())
        throw Constants.ExceptionDatabaseMissing;

    return from data in context.MyDataSet
           where data.GUID.Equals(guid)
           select data;
}

戻り値に何かが含まれているかどうかを確認してください。はいの場合、重複があります。

于 2013-02-05T16:01:27.533 に答える