1

我有一个 CodeFirst 实体框架数据库。我自己生成了一个 GUID,模型中定义了以下内容:

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

我的目标 - 有没有一种方法可以首先验证数据库中尚不存在 GUID,然后根据需要创建一个新的 GUID,直到找到唯一的 GUID?

4

3 回答 3

2

这不是一个Guid,这是一个string;最好将其声明为 a Guid,那么您不必担心。

实际上,Guid相同的机器不会在同一台机器上生成两次。因此,如果您将财产更改为:

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

务必先阅读数据库以确保确定。但是 E=MC^2 或你的钱回来。

Context.DbSet.find(MyGuid);

Nope not found.... 如果使用 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 回答