如何创建“非动态”Guid作为数据库条目的值?

时间:2013-07-16 14:45:57

标签: c# guid

我会试着解释一下我想要获得的东西:
我正在尝试创建一个Guid值作为我的数据库条目的属性 我已经检查了其他问题和答案来解决我的问题,这是我到目前为止所获得的模型:

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

但问题不在于此代码中。因为这样,Guid值会自动生成,我可以在我的视图中验证Guid 但是每当我在我的数据库中编辑一个条目时,Guid就会有所改变。这就是我称之为“动态”Guid的原因 我猜是因为每次数据模型的私有部分( = Guid.NewGuid(); )都会调用属性 MyGuid
那么我怎样才能创建一个随机的Guid,然后将其设置为MyGuid的值?

EDIT-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(),不是吗?
那么,为什么这个代码正在进行一个侧面项目并且它不能用于另一个项目呢? 我错过了什么?

2 个答案:

答案 0 :(得分:1)

不是在代码中创建GUID,而是只在插入时才能在数据库中创建GUID

          DECLARE @ID uniqueidentifier
          SET @ID = NEWID()

答案 1 :(得分: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; }
    }
}