Я использую EF Core 3.1
с SQL Server
провайдером. Если не указано иное, EF Core
использует сгенерированные значения для ключей сущности. (Ключ генерируется провайдером, в данном случае SQL Server
) В следующей документации page я нашел утверждение, что:
Например, при использовании SQL Server , значения будут автоматически генерироваться для свойств GUID (с использованием алгоритма SQL последовательного сервера GUID)
Я использовал SQL Profiler
для исследования запросов, генерируемых ядром EF, и заметил, что для добавления объекта генерируется следующее SQL
:
exec sp_executesql N'SET NOCOUNT ON;
INSERT INTO [MySchema].[MyTable] ([Id], ...)
VALUES (@p0, ...);
',N'@p0 uniqueidentifier, ...',@p0='B3DC06A3-2B58-46A0-9085-7A17B064433F', ...
здесь я вижу, что запрос уже имеет GUID
в запросе, что означает, что он получает его до генерации запроса. Но я не заметил каких-либо дополнительных вызовов в SQL Profiler
.
Как сгенерированные значения работают за капотом?