1

我将尝试解释我想获得什么:
我正在尝试创建一个 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(),不是吗?
那么,为什么这段代码在一个副项目上工作,而在另一个项目上却不工作?
我错过了什么?

4

2 回答 2

1

除了在代码中创建 GUID 之外,您也可以在数据库中创建它,并且仅在插入时像这样

          DECLARE @ID uniqueidentifier
          SET @ID = NEWID()
于 2013-07-16T14:50:58.993 回答
0

你应该保持更接近第一个模型恕我直言。

您可以简单地添加一个以 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; }
    }
}
于 2013-07-18T15:22:45.930 回答