我有一個函數(addItem),用於將新行添加到我的數據庫。但功能運行時,它給了我這個錯誤:添加到MVC中的數據庫時的外鍵問題
{"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK1\". The conflict occurred in database \"C:\\USERS\\ALAL0006\\DOWNLOADS\\SOA PROJEKT\\SOA PROJEKT\\SOA PROJEKT\\APP_DATA\\DATABASE1.MDF\", table \"dbo.Category\", column 'Id'.\r\nThe statement has been terminated."}
控制器:
public ActionResult Create()
{
IEnumerable<SelectListItem> categories = tbl.Category.Select(c => new SelectListItem
{
Value = SqlFunctions.StringConvert((double)c.Id).Trim(),
Text = c.Namn
});
//ViewBag.Category = new SelectList(tbl.Category, "Id", "Namn");
ViewBag.Id = categories;
return View();
}
[HttpPost]
public ActionResult Create(Vara newItm)
{
if (ModelState.IsValid)
{
srvc.addItem(newItm.Namn, newItm.Pris, newItm.CategoryID);
return RedirectToAction("Create");
}
else
{
return View();
}
}
服務:
public void addItem(string name, int price, int ctgID)
{
Database1Entities1 tbl = new Database1Entities1();
Vara newItm = new Vara() {
Namn = name,
Pris = price,
CategoryID = ctgID,
};
tbl.Vara.Add(newItm);
try
{
tbl.SaveChanges();
}
CSHTML文件:
<div class="form-group">
@Html.LabelFor(model => model.Namn, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Namn)
@Html.ValidationMessageFor(model => model.Namn)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Pris, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Pris)
@Html.ValidationMessageFor(model => model.Pris)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CategoryID, "CategoryID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Id", "Välj kategori")
@Html.ValidationMessageFor(model => model.CategoryID)
</div>
</div>
分類DB:
CREATE TABLE [dbo].[Category] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Namn] VARCHAR (MAX) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC));
項目DB:
CREATE TABLE [dbo].[Vara] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Namn] VARCHAR (MAX) NOT NULL,
[Pris] INT NOT NULL,
[CategoryID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK1] FOREIGN KEY ([CategoryID]) REFERENCES [dbo].[Category] ([Id]));
我不確定什麼,我應該做的,以解決這個問題。有任何想法嗎?
檢查CATID存在於類別表作爲主鍵。 – Zaki
@Zaki它確實存在,在類別表中有名稱「Id」,它是主鍵。 –
非常感謝@StephenMuecke –