实体框架LINQ插入

时间:2017-04-07 22:58:39

标签: c# entity-framework linq

我试图使用LINQ在我的数据库中插入一个对象。我的主要关键是自动增量。我是否需要在代码中增加id或Entity Framework可以做到这一点?

我有我的dbContext:

TravelAgencyEntities db = new TravelAgencyEntities();

我试图插入用户对象:

User newUser = new User();
        newUser.FirstName = firstName.Text.ToString();
        newUser.LastName = lastName.Text.ToString();
        newUser.Email = email.Text.ToString();
        newUser.Password = password.Text.ToString();

        db.Users.Add(newUser);
        db.SaveChanges();

它返回一个异常:

{"An error occurred while updating the entries. See the inner exception for details."}

我认为该错误是因为我没有在我的对象中设置id,但它应该是自动增量。有谁知道这个问题?

内部错误:

Cannot insert explicit value for identity column in table 'User' when IDENTITY_INSERT is set to OFF

1 个答案:

答案 0 :(得分:1)

如果您首先使用代码,可能在DbContext OnModelCreating中设置了以下代码。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<User>()
        .Property(a => a.Id)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}

或设置如下属性

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    .....
}

您必须将“无”更改为“身份”。标识选项是密钥的默认选项。