Является ли создание экземпляра GUID в Entity Framework Core плохой практикой? - PullRequest
0 голосов
/ 20 ноября 2018

Если у меня есть модель с ключом типа Guid, это плохая практика - явно устанавливать идентификатор в конструкторе?

Я знаю, что он будет установлен неявно в Entity Framework, но все будетчто случилось (возможно, с точки зрения производительности) при его явной настройке?

Пример:

class MyModel
{
    public MyModel()
    {
        Id = Guid.NewGuid();
    }

    [Key]
    public Guid Id { get; set; }
}

Я думаю, что Guid резервируется последовательным идентификатором в SQL-сервере, и еслиЯ установил значение явно, я полагаю, что уменьшу производительность индексации, потому что она больше не будет последовательной?

Я не смог найти ответ на этот вопрос, и мне очень любопытно по этому поводу.

1 Ответ

0 голосов
/ 20 ноября 2018

Я вижу недостаток дизайна, а не проблему производительности: модели не должны генерировать свои id.Это вне их ответственности.Репозитории делают это с помощью метода Add.

Guid может быть сгенерировано разными способами: например, оно может быть случайным или последовательным.Существуют разные алгоритмы для их генерации в любом случае.Поэтому вы закрываете свой выбор только до одного.

И вы форсируете момент, на который назначена модель id: вы можете этого не хотеть, чтобы отложить свое назначение до моделивозможно, потребуется настойчивость. Например, ноль Guid может быть полезно знать, что некоторая модель еще не является постоянной.

...