“无法为标识列插入显式值......”即使我不是

时间:2013-04-08 22:52:39

标签: linq-to-sql

我有这个功能:

private static void SaveResource(StrategicPlanningDbDataContext ctx, ResourceModel resource, int impliedID)
    {
        var existing = ctx.Resources.FirstOrDefault(r => r.ID == resource.ID) ??
                       new Resource();

        existing.ImpliedID = impliedID;
        existing.HasAccepted = resource.HasAccepted;
        existing.IsPrimary = existing.IsPrimary;
        existing.UserID = resource.UserID;

        if (existing.ID == default(int))
        {
            ctx.Resources.InsertOnSubmit(existing);
            ctx.SubmitChanges();
            resource.ID = existing.ID;
        }
    }

当我点击新Cannot insert explicit value for identity column in table 'Resource' when IDENTITY_INSERT is set to OFF.的ctx.SubmitChanges()时收到Resource消息。 Resource.ID是一个身份(显然)。当我们进入函数时它是0(因为我刚刚创建它,int显然必须有一个默认值。

我尝试从我的dbml中删除该表并重新添加它几次,但我一直收到此错误。我检查了设计师,设计师在ID属性上方[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,我关闭并重新启动了Visual Studio,它变得更好了。 (顺便说一下,如果我从.dbml中完全删除了表格,它也正在编译就好了,呃,没有任何意义)。