如何创建一个“;“非动态”;Guid作为数据库项的值

本文关键字:Guid 非动态 数据库 动态 创建 一个 何创建 | 更新日期: 2023-09-27 18:22:28

我将尝试解释我想要获得的内容:
我正在尝试创建一个Guid值作为数据库项的属性
我已经检查了其他问题和答案来解决我的问题,这是我迄今为止得到的模型:

public class MyModel
{
    private Guid myGuid = Guid.NewGuid();
    public Guid MyGuid
    {
        get { return myGuid; }
        set { myGuid = value; }
    }
}

但问题不在这个代码中。因为通过这种方式,Guid值是自动生成的,我可以在视图中验证Guid
但每次我在数据库中编辑条目时,Guid都会自我刷新并发生变化。这就是为什么我称之为"动态"Guid
我想是因为属性MyGuid每次调用数据模型的私有部分(=Guid.NewGuid()
那么,我如何创建一个随机的Guid,然后将其设置为MyGuid的值呢?

编辑-1

我在模型中创建了一个方法,以便创建更精确的Guid生成。现在我的模型是这样的:

public class MyModel
{
    public string myGuid = Convert.ToString(new Guid());
    public string MyMethod(string myValue)
    {
        var empty = Convert.ToString(new Guid());
        if (myValue == null || myValue == empty)
        {
            var newGuid = Guid.NewGuid();
            string stringGuid = Convert.ToString(newGuid);
            return stringGuid;
        }
        else { return myValue;}
    }
    public Guid MyGuid
    {
        get { return myGuid; }
        set { myGuid = MyMethod(value); }
    }
}

在另一个项目的测试中,这个方法只起过一次作用,然后,当我试图导入这个方法时,它坏了,停止了工作
使用此方法,当我在数据库中创建条目时,每次Guid编辑器字段为空或Guid为零时,它都应该生成Guid.NewGuid(),不是吗
那么,为什么这段代码在一个附带项目上工作,而在另一个项目上却不工作呢
我错过了什么?

如何创建一个“;“非动态”;Guid作为数据库项的值

您也可以在数据库中创建GUID,而不是在代码中创建GUID

          DECLARE @ID uniqueidentifier
          SET @ID = NEWID()

您应该更接近第一个模型IMHO。

您可以简单地添加一个以Guid作为参数的构造函数

public class MyModel
{
    private Guid myGuid;
    public MyModel()
    {
        myGuid = Guid.NewGuid();
    }
    public MyModel(Guid guid)
    {
        myGuid = guid;
    }
    public Guid MyGuid
    {
        get { return myGuid; }
        set { myGuid = value; }
    }
}