В настоящее время я должен использовать это:
modelBuilder.Entity<ClassName>().Property(p => p.id).ValueGeneratedNever();
, чтобы отключить 0, превращающийся в 1 и вызывающий проблему дубликата ключа, когда я вставляю ClassName
с первичным ключом id = 0.
Честно говоря, это поведение действительно раздражает, и мне нужно отключить его глобально для этой модели, как мне это сделать, не вставляя 200+ вышеуказанного кода для каждого поля? У меня есть много составных первичных ключей, которые могут использовать 0 в качестве значения.
Редактировать: проблема в Postgresql. Пожалуйста, смотрите { ссылка } для той же проблемы и как повторить это. Это происходит при db.SaveChanges();
, где db
- контекст базы данных.
Редактировать 2: Кажется, что этот код работает:
foreach (var property in modelBuilder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Select(p => modelBuilder.Entity(p.DeclaringEntityType.ClrType)
.Property(p.Name)))
{
property.ValueGeneratedNever();
}