我需要在数据库中手动输入主键值,因为我需要将主键值与枚举同步。然而,使用DatabaseGeneratedoption.None似乎不起作用。即使我删除数据库并重新开始,JobType中的Id列仍具有自动递增的主键。
这与我使用枚举作为主键有关吗?
职位实体
这与我使用枚举作为主键有关吗?
职位实体
public class Job : EntityBase
{
public long JobId { get; set; }
public JobTypeEnum JobTypeId { get; set; }
public JobType JobType { get; set; }
}
工作类型
public class JobType
{
public JobTypeEnum Id { get; set; }
public String Name { get; set; }
public String Description { get; set; }
}
配置类
public class JobTypeConfiguration : EntityTypeConfiguration<JobType>
{
public JobTypeConfiguration()
{
HasKey(x => x.Id);
Property(x => x.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Property(x => x.Name).HasMaxLength(20);
Property(x => x.Description).HasMaxLength(255);
}
}
public class JobConfiguration : EntityTypeConfiguration<Job>
{
public JobConfiguration()
{
HasKey(x => x.JobId);
Property(x => x.JobId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
HasRequired(x => x.JobType).WithMany().HasForeignKey(x => x.JobTypeId);
}
}
模型构建器
modelBuilder.Configurations.Add(new JobConfiguration());
modelBuilder.Configurations.Add(new JobTypeConfiguration());
编辑:
我找到了一个可能的原因。我有一个迁移,用于创建 Elmah 的表格。如果我排除该迁移,那么一切都正常。如果我包括它,那么就会出问题。
真是奇怪...