我正在嘗試使用此代碼將產品添加到類別
public void AddProductToCategory()
{
if (categoryExist)
{
var product = FindProduct(productArticleNumber);
var productExist = product != null;
if (productExist)
{
AddProduct(product);
}
}
我收到一條錯誤訊息:
當 IDENTITY_INSERT 設定為 OFF 時,無法在表“MyTable”中為標識列插入顯式值。
這是我的表:
CREATE TABLE Product (
Id INT IDENTITY PRIMARY KEY,
Name NVARCHAR(50) NOT NULL,
ArticleNumber NVARCHAR(50) NOT NULL,
DESCRIPTION NVARCHAR (500),
Price INT,
UNIQUE (Articlenumber),
UNIQUE (Name)
)
CREATE TABLE Categories(
Id INT IDENTITY PRIMARY KEY,
Name NVARCHAR (10),
ProductId INT,
FOREIGN KEY (ProductId)
REFERENCES Product (Id)
)
這里有
添加產品
代碼:
private static void AddProduct(Product product)
{
context.Product.Add(product);
context.SaveChanges();
}
我試影像這樣將 identity_Insert 設定為 On:
SET IDENTITY_INSERT Product ON
但我仍然遇到同樣的錯誤
uj5u.com熱心網友回復:
有點不清楚您要做什么...插入新產品或更改現有...
在您的代碼中,您正在檢查產品是否存在,如果存在,您將再次添加它。因此,您正在復制資料庫不允許的產品(具有相同主鍵的產品)。你應該這樣做:
public void AddProductToCategory()
{
if (categoryExist)
{
var product = FindProduct(productArticleNumber);
var productExist = product != null;
if (!productExist)
{
AddProduct();
}
}
}
private static void AddProduct()
{
Product newProduct = new Product()
{
Name = "some name",
ArticleNumber = "123"
//etc...
}
context.Product.Add(newProduct);
context.SaveChanges();
}
或者,如果您想輸入與現有產品具有相同資料的新產品,請將現有產品的所有內容復制到新產品并添加該產品。記得省略ID,讓資料庫分配新的ID(身份)
在那種情況下,你可以這樣做:
public void AddProductToCategory()
{
if (categoryExist)
{
var product = FindProduct(productArticleNumber);
var productExist = product != null;
if (productExist)
{
AddProduct(product);
}
}
}
private static void AddProduct(Product existingProduct)
{
Product newProduct = new Product()
{
Name = existingProduct.Name
ArticleNumber = existingProduct.ArticleNumberr
//etc...
//DON'T DO THIS:
//Id = existingProduct.Id
}
context.Product.Add(newProduct);
context.SaveChanges();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535347.html
上一篇:如何獲得與表中僅一個“B”屬性相關的“A”屬性?(SQL/林克)
下一篇:SQL查詢格式
