EF 6使用提供的ID插入实体仍会生成ID

时间:2017-03-08 18:02:24

标签: c# entity-framework entity-framework-6

我有一个ID字段

的实体
public class AgentOrder : BaseEntity
{
        public int Id { get; set; }
}

public class AgentOrderMap : EntityTypeConfiguration<AgentOrder>
{
    public AgentOrderMap()
    {
        ToTable("AgentOrder");
        HasKey(m => m.Id);
        Property(m => m.Status);
    }
}

我创建了一个新实体并定义了Id属性。但是当我保存更改时,新实体的创建不是我定义的Id,而是自动生成的。

关键属性是否正常?

2 个答案:

答案 0 :(得分:2)

由于您使用的是Fluent配置,您只需要关闭默认的身份插入配置:

所以这个:

 public AgentOrderMap()
{
    ToTable("AgentOrder");
    HasKey(m => m.Id);
    Property(m => m.Status);
}

变为:

public AgentOrderMap()
{
    ToTable("AgentOrder");
    HasKey(m => m.Id);
    Property(m => m.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    Property(m => m.Status);
}

请注意,您的数据库需要支持此功能,并且还会关闭标识插件。

答案 1 :(得分:0)

按照惯例,id属性使用Identity,因此无法手动插入。像这样配置:

Property(l => l.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);