使用 C# 时出现错误 "Cannot insert explicit value for identity column in table"
Error "Cannot insert explicit value for identity column in table" using C#
我在使用简单的本地 SQL 数据库时遇到问题。我对数据库或使用 C# 访问它们不是很了解,所以任何帮助将不胜感激。我正在尝试使用 C# 通过 Linq 向 SQL 添加一个条目到我的数据库中的 table 之一。这是我的代码片段。
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
tbl_Inventory inv = new tbl_Inventory();
inv.Title = addTitleTextBox.Text;
inv.Model = addModelTextBox.Text;
inv.Category = addCategoryTextBox.Text;
inv.Quantity = int.Parse(addQuantityTextBox.Text);
inv.Price = decimal.Parse(addPriceTextBox.Text);
inv.Description = addDescriptionTextBox.Text;
db.tbl_Inventories.InsertOnSubmit(inv);
db.SubmitChanges();
int id = inv.IdProducts;
MessageBox.Show($"Item creation successful. Item number is {id}");
}
我不断收到以下错误:
Cannot insert explicit value for identity column in table 'tbl_Inventory' when IDENTITY_INSERT is set to OFF
我的 table 有一个名为 IDProducts
的列,用作标识列以递增 1。我可以在 Visual Studio 设计中添加条目 window 和它添加了没有错误的条目,增量工作正常,但当我 运行 我的代码时却没有。问题是我的代码没有尝试为 IDProducts
赋值。我尝试删除 IDProducts
并将其添加回来,但我仍然遇到相同的错误。我还有另一个 table 我通过 Visual Studio 创建的,使用与上面代码非常相似的代码完全相同,它向 table 添加了条目,我没有遇到任何问题。我不确定我可能做了什么不同的事情。
您的 C# 模型 class 似乎没有将 IDProducts
列正确定义为 IDENTITY
列 - 因此您的 Linq-to-SQL代码尝试将值插入标识列,这会导致此错误。
您需要确保正确注释您的专栏 - 因为我不知道您的 tbl_Inventory
class 长什么样,我只能给您看这个:
[Table(Name="Inventory")] // or whatever it really is ...
public class tbl_Inventory
{
[Column(IsPrimaryKey=true,IsDbGenerated=true)]
public int IDProducts { get; set; }
// all your other columns here
}
您需要将 IsDbGenerated
注释添加到您的 IDProducts
列,以便 Linq-to-SQL 知道这是一个由数据库生成值的列, 插入时。
我在使用简单的本地 SQL 数据库时遇到问题。我对数据库或使用 C# 访问它们不是很了解,所以任何帮助将不胜感激。我正在尝试使用 C# 通过 Linq 向 SQL 添加一个条目到我的数据库中的 table 之一。这是我的代码片段。
using (DataClasses1DataContext db = new DataClasses1DataContext())
{
tbl_Inventory inv = new tbl_Inventory();
inv.Title = addTitleTextBox.Text;
inv.Model = addModelTextBox.Text;
inv.Category = addCategoryTextBox.Text;
inv.Quantity = int.Parse(addQuantityTextBox.Text);
inv.Price = decimal.Parse(addPriceTextBox.Text);
inv.Description = addDescriptionTextBox.Text;
db.tbl_Inventories.InsertOnSubmit(inv);
db.SubmitChanges();
int id = inv.IdProducts;
MessageBox.Show($"Item creation successful. Item number is {id}");
}
我不断收到以下错误:
Cannot insert explicit value for identity column in table 'tbl_Inventory' when IDENTITY_INSERT is set to OFF
我的 table 有一个名为 IDProducts
的列,用作标识列以递增 1。我可以在 Visual Studio 设计中添加条目 window 和它添加了没有错误的条目,增量工作正常,但当我 运行 我的代码时却没有。问题是我的代码没有尝试为 IDProducts
赋值。我尝试删除 IDProducts
并将其添加回来,但我仍然遇到相同的错误。我还有另一个 table 我通过 Visual Studio 创建的,使用与上面代码非常相似的代码完全相同,它向 table 添加了条目,我没有遇到任何问题。我不确定我可能做了什么不同的事情。
您的 C# 模型 class 似乎没有将 IDProducts
列正确定义为 IDENTITY
列 - 因此您的 Linq-to-SQL代码尝试将值插入标识列,这会导致此错误。
您需要确保正确注释您的专栏 - 因为我不知道您的 tbl_Inventory
class 长什么样,我只能给您看这个:
[Table(Name="Inventory")] // or whatever it really is ...
public class tbl_Inventory
{
[Column(IsPrimaryKey=true,IsDbGenerated=true)]
public int IDProducts { get; set; }
// all your other columns here
}
您需要将 IsDbGenerated
注释添加到您的 IDProducts
列,以便 Linq-to-SQL 知道这是一个由数据库生成值的列, 插入时。