gpt4 book ai didi

c# - DatabaseGeneratedOption.None 在 Entity Framework 6 中不起作用

转载 作者:行者123 更新时间:2023-11-30 16:57:13 25 4
gpt4 key购买 nike

我需要在数据库中手动输入主键值,因为我需要键值与枚举同步。但是,使用 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 创建表的迁移。如果我排除该迁移,那么它工作正常。如果我包括它,那么它不会。

奇怪的...

最佳答案

我已将您的代码添加到我的项目中。这是生成的迁移代码:

    public override void Up()
{
CreateTable(
"dbo.Jobs",
c => new
{
JobId = c.Long(nullable: false, identity: true),
JobTypeId = c.Int(nullable: false),
})
.PrimaryKey(t => t.JobId)
.ForeignKey("dbo.JobTypes", t => t.JobTypeId, cascadeDelete: true)
.Index(t => t.JobTypeId);

CreateTable(
"dbo.JobTypes",
c => new
{
Id = c.Int(nullable: false),
Name = c.String(maxLength: 20),
Description = c.String(maxLength: 255),
})
.PrimaryKey(t => t.Id);


}

可以看到dbo.JobTypes表没有identity: true。您可能会发现自己陷入了此处描述的问题:How to alter column from DatabaseGenerated.Identity to DatabaseGenerated.None

最简单的做法可能是找到JobTypeCreateTable 语句,修复它,然后重新创建数据库。

关于c# - DatabaseGeneratedOption.None 在 Entity Framework 6 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com