Это стандартное поведение EF.
Разница между традиционной базой данных и базой данных In-Memory заключается только в том, что в базе данных In-Memory (IMDB, также известной как база данных основной памяти или MMDB) есть база данных, данные которой хранятся в основной памяти.чтобы ускорить время отклика, когда традиционная база данных этого не делает.
В целом поведение EF применяется к обеим базам данных.
В зависимости от используемого поставщика базы данных значения могут генерироваться на стороне клиента EFили в базе данных.Если значение генерируется базой данных, тогда EF может назначить временное значение при добавлении объекта в контекст.Это временное значение будет затем заменено на значение, сгенерированное базой данных, во время SaveChanges ().
Если вы добавите в контекст сущность, которой присвоено значение, то EF попытается вставить это значение, а несоздание нового.
Вы можете настроить генерацию значения тремя различными способами
1) Генерация значения не производится
public class TodoItem
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
}
2) Значение генерируется при добавлении
public class TodoItem
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
}
3) Значение, создаваемое при добавлении или обновлении.
public class TodoItem
{
public long Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime LastUpdated { get; set; }
}
Ссылка: Value Generation Patterns In EF Core