当前位置: 首页 > 面试题库 >

当IDENTITY_INSERT设置为OFF时,无法为表'ClientDetails'中的标识列插入显式值

太叔岳
2023-03-14
问题内容

每当我尝试通过表单将数据提交到此数据库时,都会引发此异常:-

  • 例外

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

但是,该表单没有字段,因此数据可以输入身份列(PK),所以我不知道为什么会这样。

目前,我正在使用标准的asp.net mvc提交按钮,但最终将其链接到jquery对话框按钮

ClientNo列(异常所指的所述列)具有以下属性

  • Name - ClientNo
  • type - int
  • NULLS - NO
  • Identity Spec - Yes
  • Is Identity - Yes
  • Increment - 1
  • Seed - 1

ClientNo的数据在900以上,依此类推

当客户表单中没有在表单中输入数据时,也会引发此异常

它抛出在DataCOntext.SubmitChanges()方法上

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create1(ClientDetail client)
        {
            if(ModelState.IsValid)
            { 
            client = new ClientDetail();



                UpdateModel(client);
                //Debug Code
                System.Diagnostics.Debug.WriteLine("AddNewClient Create1");
                repo.AddNewClient(client);
                //Debug Code
                System.Diagnostics.Debug.WriteLine("Save Create1");


                // System.Data.SqlClient.SqlException thrown at this line  
                repo.Save();

                //Debug Code - never reached
                System.Diagnostics.Debug.WriteLine("Saved Changes");


              //  return RedirectToAction("Details", new { id = client.ClientNo });




            }
            return View(client);
        }

public void AddNewClient(ClientDetail client)
       {    
            System.Diagnostics.Debug.WriteLine("Start Insert On Submit");

            db.ClientDetails.InsertOnSubmit(client);
            System.Diagnostics.Debug.WriteLine("Finish Insert On Submit");
       }

public void Save()
        {
            System.Diagnostics.Debug.WriteLine("In Save Method");
            db.GetChangeSet();
            System.Diagnostics.Debug.WriteLine("Got ChangeSet"); 
            db.SubmitChanges();
            System.Diagnostics.Debug.WriteLine("Exit Save Method");
        }
Is this the query everyone is talking about

[Column(Storage="_ClientNo", DbType="Int NOT NULL", IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)]
        public int ClientNo
        {
            get
            {
                return this._ClientNo;
            }
            set
            {
                if ((this._ClientNo != value))
                {
                    this.OnClientNoChanging(value);
                    this.SendPropertyChanging();
                    this._ClientNo = value;
                    this.SendPropertyChanged("ClientNo");
                    this.OnClientNoChanged();
                }
            }
        }

有谁知道为什么发生这种情况的解决方案或原因?

谢谢


问题答案:

将IsDbGenerated = true添加到ClientNo属性

[Column(Storage="_ClientNo", DbType="Int NOT NULL", **IsDbGenerated=true,** IsPrimaryKey=true, UpdateCheck=UpdateCheck.Never)] 
public int ClientNo


 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 当IDENTITY_INSERT设置为OFF时,无法在表’table’中为身份列插入显式值 (22个答案) 7年前关闭。 sqlfiddle上的结构表和结果查询 我想使用查询: 但是我得到了错误: 请告诉我为什么会出现错误以及如何正确插入数据? 问题答案: 笔记 这不是一个好习惯,一点也不建议。您可能最终会得到重复的值,因此,让identity列为您生成

  • 问题内容: 是否有人知道这个错误(仅当使用列列表且IDENTITY_INSERT为ON时,才能指定表“ HD_AANVRAAG_FASE”中的身份列的显式值)。 说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。 异常详细信息:System.Data.SqlClient.SqlException:仅在使用列列表且IDENTITY_INSERT为

  • 问题内容: 当我尝试通过hibernate方式提交到SQL Server时出现JDBC错误 当IDENTITY_INSERT设置为OFF时,无法在表’Report’中为标识列插入显式值 我正在使用由包含以下内容的netbeans生成的映射: 在我看来,它应该正确地进行身份插入。 关于如何解决此问题的任何想法? 编辑: 一些文档链接,供后人, http://www.hibernate.org/hib

  • 问题内容: 我有一个已删除的文件存档数据库,其中存储了已删除文件的ID,我希望管理员能够恢复该文件(以及用于链接文件的相同ID)。我不想从整个表中删除identity_insert,因为增量为1的效果很好。在我的插入存储过程中,我有这样的东西 但是我不断收到同样的错误: 当IDENTITY_INSERT设置为OFF时,无法在表’TBL_Content’中为标识列插入显式值。 有什么帮助吗? 问题答

  • 如何将从上述插入语句填充的标识值()插入到表(另一个表)中 任何人都可以解释一下我如何为更大的记录集(数千条记录)实现它? 我们可以使用循环和?如果是,请解释我们如何做到这一点? 如果我从选择查询插入到#test中,会是什么情况? 插入到#test(b,c)中从…(数千条记录)中选择 我如何捕获标识值并将该值用于另一个(#sample) insert into #sample(e,f) selec

  • 问题内容: 在SQL Server 2000或更高版本中,当使用如下语句时,是否有处理自动生成的主键(标识)列的方法? 我的目标是根本不使用列名。 问题答案: 默认情况下,如果你有一个标识列,你就 不会 需要在值部分指定它。如果您的表是: 然后,您可以执行以下操作: 这将为您自动生成ID,而您完全不必考虑它。如果您可以为ID列分配一个值。