我会尝试解释我想要获得的内容:
我试图创建一个Guid值作为我的数据库条目的属性。
我已经检查其他问题和答案,解决我的问题,这是我目前为止型号:如何为数据库条目创建“非动态”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的值?
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(),不是吗?
那么,为什么这个代码是在一个侧面项目上工作,而不是在另一个上工作呢?
我错过了什么?
为什么不把它在构造函数? –
加载'MyModel'时,您可能不会从数据库正确填充MyGuid。 'NewGuid'会作为对象构造的一部分发生,之后它应该被你的DB值覆盖 - 假设你已经正确加载它!如果你正在加载它,那么我猜你不会将它作为隐藏值存储在'View'中,因此当它回复时,它认为你正在创建一个新记录而不是编辑现有的记录。没有更多的背景,只是一种预感。 –
如果要将Guid写入数据库并且要从数据库读取它,则必须以某种方式使用数据库中的值填充模型。目前所有的代码显示是,每次创建模型实例时都会创建一个新的Guid。 – David