实体框架'无法为标识列插入显式值'错误

时间:2016-08-15 00:05:40

标签: c# entity-framework

我理解错误消息的内容。我只是不确定它为什么这么说。我的表有一个Identity,它被设置为自动递增,但当我去保存实体时,我收到以下错误:

  

当IDENTITY_INSERT设置为OFF时,无法在表'会议'中为标识列插入显式值。

我正在使用代码优先方法,而我的Conference实体看起来像这样:

public class Conference
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int DugoutId { get; set; }
    public int ConferenceDetailsId { get; set; }

    [ForeignKey("Id")]
    public virtual Dugout Dugout { get; set; }
    [ForeignKey("Id")]
    public virtual ConferenceDetail ConferenceDetail { get; set; }
}

当我要保存会议时,值如下:

Id: 0
DugoutId: 15
ConferenceDetailsId: 1
Dugout: null
ConferenceDetail: null

任何想法为什么不能保存?

2 个答案:

答案 0 :(得分:2)

[ForeignKey] attibutes指向Dugout和ConferenceDetails的错误属性。应该是ForeignKey(“DugoutId”)和ForeignKey(“ConferenceDetailsId”)。

答案 1 :(得分:1)

您是先使用代码还是自动生成代码? 根据您的操作,模型和数据库之间可能存在不匹配。您可以尝试使用分析器确切地知道EF正在尝试做什么。 此thread也可以为您提供帮助。