自动增量标识列插入错误

时间:2017-01-03 18:10:44

标签: sql-server entity-framework-core

好的,首先我在这个问题上看到了几个问题。我已经完成了所有这些,并且没有一个解决方案适合我。 我正在使用asp.net核心1.1.0和SQL Server 2016.我也在使用代码第一种方法。以下是我对该表的映射

public class TierMap : IEntityTypeConfiguration<Tier>
{
    public void Map(EntityTypeBuilder<Tier> builder)
    {
        builder.HasKey(a => a.TierID);
        builder.Property(a => a.TierID).UseSqlServerIdentityColumn<int>();
        builder.HasOne(a => a.Country)
            .WithMany(a => a.Tiers)
            .HasForeignKey(a => a.CountryID);
    }
}

以下是SQL Server中表格的设计视图:

当我创建Tier对象的新实例时,除TierID之外的所有属性都会得到一些值(随机负整数)。因此,插入数据库会引发以下错误

  

当IDENTITY_INSERT设置为OFF时,无法在表'Tiers'中为identity列插入显式值。

enter image description here

以下是尝试保存数据的代码

[HttpPost("AddTier")]
public async Task<IActionResult> AddTier([FromBody]TierDataModel model)
{
    if (!ModelState.IsValid)
    {
        Response.AddApplicationError("Data is invalid ");
        return BadRequest();
    }

    Tier tier = new Tier();
    tier.TierName = model.TierName;
    tier.TierNo = model.TierNo;
    tier.CountryID = model.CountryID;
    _tierService.AddTier(tier);

    await _unitOfWorkAsync.SaveChangesAsync();

    return Ok();
}

1 个答案:

答案 0 :(得分:0)

更改_dbSet.Attach(实体); to _dbSet.Add(entity);在我的Repository Class中解决了问题