如何创建一个“;“非动态”;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
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; }
}
}