在对象中插入guid作为主键时出错

时间:2018-10-04 08:07:33

标签: c# object primary-key guid

尝试将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;
            }
        }
    }

2 个答案:

答案 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 =