Entity Framework можно ли генерировать значение строкового шаблона при добавлении объекта в базу данных? - PullRequest
0 голосов
/ 03 января 2019

У меня есть модель

public User
{
    public long Id {get;set;}
    public string UniqueUserId{get;set;}
    public string Company {get;set;}
    public string City {get;set;}
}

здесь Id - это первичный ключ с автоинкрементом, компания и город, которые являются значениями, введенными пользователем. UniqueUserId - это значение шаблона. его 16-значное значение. Он содержит первые 4 символа компании, 4 символа из города и остальные цифры взяты из идентификатора (предположим, что идентификатор равен 1, другие цифры будут вставлены как 0 с помощью цикла).

что я сейчас делаю, так это то, что =>

  1. Чтение данных от пользователя
  2. Вставить данные в контекст, а затем сохранить изменения
  3. Получить успешно вставленные данные из контекста
  4. Создание уникального идентификатора пользователя
  5. Обновить сущность и сохранить изменения с контекстом

Я знаю, что есть лучшие способы сделать это. Но я не понимаю. так какое-нибудь улучшенное и лучшее решение?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Основная проблема заключается в попытке получить автоматически увеличенный идентификатор перед вставкой.Согласно Можете ли вы получить автоматически увеличенный Id перед сохранением? предлагаемый ответ: нет ли / все "хитрости", чтобы обойти это и самостоятельно определить идентификатор, возможно, имеют недостатки.

Есть и другиеварианты, включая использование GUID вместо идентификатора, но это будет зависеть от ваших требований.

0 голосов
/ 03 января 2019

Я объявил UniqueUserId свойство, подобное этому:

    public  long Id { get; set; }
    public   string Company { get; set; }
    public   string City { get; set; }

    public string UniqueUserId
    {
        get
        {

            return  $"{Company[0]}{ Company[1]}{ Company[2]}{ Company[3]}{City[0]}{City[1]}{City[2]}{City[3]}{Id.ToString()[0]}{Id.ToString()[1]}{Id.ToString()[2]}{Id.ToString()[3]}{Id.ToString()[4]}{Id.ToString()[5]}{Id.ToString()[6]}{Id.ToString()[7]}";
        }
        set
        {

        }
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...