データベースに新しい行を追加するための関数(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 Categoryテーブルには「Id」という名前があり、プライマリキーです。 –
ありがとうございます@StephenMuecke –