Это не зависит от поставщика памяти.По соглашению int
PK считаются автоинкрементами (SqlServer identity
), поэтому проблема похожа на добавление явных значений в колонку автоинкремента.
Если вы сохраните new DimEntity { EntityEntityId = 0, ... }
в переменной, вы увидите, что после Add
значение EntityEntityId
будет равно 1 (потому что, когда значение PK является значением по умолчанию (0 для int
)), генерация значения при добавлении выполняется).
Но при добавлении сущности с нестандартным int
PK генерация значения не происходит, и исключение выдается для EntityEntityId = 1
, посколькуоно уже существует - сгенерированное значение для первой сущности, которую вы добавили первым.
В общем, если вы не хотите генерировать значения PK, вы должны подписаться на это внутри OnModelCreating
:
entity.Property(e => e.EntityEntityId)
.HasColumnName("Entity_EntityID")
.ValueGeneratedNever(); // <--