尝试将GUID
作为主键插入object
get
set
中。在set
部分中,我检查了value==null
是确定insert
还是update
。
public string Id
{
get
{
return this.Id;
}
set
{
try
{
this.Id = value == null ? this.Id = Guid.NewGuid().ToString("D") : value;
}
catch (Exception ex) {
throw ex;
}
}
}
答案 0 :(得分:0)
问题出在我想说的那句话,看来您在尝试访问Id
的值时正在返回Id
,所以它将最终陷入无限循环,并且原因System.StackOverflowException
编辑
您还可以使用??
运算符检查空值
示例
public string Id
{
get
{
return this.Id;
}
set
{
try
{
this.Id = value ?? Guid.NewGuid().ToString("D");
}
catch (Exception ex) {
throw ex;
}
}
}
答案 1 :(得分:0)
您不能在集合中使用属性或获取...这将是一个无休止的循环。 您可以使用该属性作为后备字段。
只需定义一个背景字段即可。
private string id;
public string Id
{
get
{
return this.id;
}
set
{
try
{
this.id = value == null ? Guid.NewGuid().ToString("D") : value;
}
catch (Exception ex) {
throw ex;
}
}
}
}
此外,请注意,就像@Loocid一样,注释-尽管如果更改为后备字段,代码也可以使用,但是不需要第二个this.id =