【问题标题】:Exception Cannot insert explicit value for identity column in table异常无法为表中的标识列插入显式值
【发布时间】:2018-12-12 03:27:07
【问题描述】:

使用FluentAPI 我是autoincreamenting 我的表的主键。

FluentAPI 配置如下:

mb.ToTable("StationeryItems");
builder.HasKey(c => c.StationeryItemId);

我得到的异常:

无法为表中的标识列插入显式值 IDENTITY_INSERT 设置为 OFF 时的“StationeryItems”。

【问题讨论】:

    标签: c# .net entity-framework ef-fluent-api


    【解决方案1】:

    尝试以下方法之一,也许它们可以解决您的问题。 DatabaseGeneratedOption:

    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int StationeryItemId { get; set; }
    

    或者:

    builder.Entity<StationeryItems>().Property(t => t.StationeryItemId) 
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    

    在 EF Core 中:

    builder.Entity<StationeryItems>().Property(b => b.StationeryItemId).ValueGeneratedOnAdd();
    

    【讨论】:

    • 我需要自己使用 FluentAPI。
    • @Illep 检查我更新的答案中的第二个选项。
    • 为什么HasKey不能处理?(我是新手。)
    • @Illep Key 和 Identity 是不同的概念。
    • 那么我应该完全删除 HasKey 吗?
    猜你喜欢
    • 2016-04-13
    • 2015-10-27
    • 1970-01-01
    • 2015-07-02
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多