Ошибка при вставке guid как первичного ключа в объекте get set - PullRequest
0 голосов
/ 04 октября 2018

Попытка вставить 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 голосов
/ 04 октября 2018

Вы не можете использовать свойства в наборе или получить ... это будет бесконечный цикл.Вы используете это свойство в качестве поля поддержки.

Просто определите поле поддержки и вот оно.

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 =

0 голосов
/ 04 октября 2018

Проблема возникает из-за того, что я бы сказал, похоже, что вы возвращаете 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;
        }
    }
}
...