我目前正在学习ASP.NET MVC应用程序。基本上我创建了一个名为Restaurant Review的EF的MVC 4应用程序。但是,当我创建一个新的审查时,它显示一个错误。我知道这一定是我错过的东西。INSERT语句与FOREIGN KEY约束冲突
的错误是
INSERT语句冲突与外键约束 “FK_dbo.ResturantReviews_dbo.Resturants_Resturant_Id”。冲突发生在数据库“OdeToFoodDb”,表“dbo.Resturants”,列'Id'中。 该声明已被终止。**
下面显示了我的层次结构。
型号
public class Resturant
{
public int Id { get; set; }
public string Name { get; set; }
public string City { get; set; }
public string Country { get; set; }
public virtual ICollection<ResturantReview> Reviews { get; set; }
}
public class ResturantReview
{
public int Id { get; set; }
public int Rating { get; set; }
public string Body { get; set; }
public string ReviewerName { get; set; }
public int ResturantId { get; set; }
}
控制器
public class ReviewsController : Controller
{
private readonly OdeToFoodDb _db = new OdeToFoodDb();
public ActionResult Index([Bind(Prefix = "id")]int restaurantId)
{
var restaurant = _db.Resturants.Find(restaurantId);
if (restaurant != null)
{
return View(restaurant);
}
return HttpNotFound();
}
[HttpGet]
public ActionResult Create(int restaurantId)
{
return View();
}
[HttpPost]
public ActionResult Create(ResturantReview review)
{
if (ModelState.IsValid)
{
_db.Reviews.Add(review);
_db.SaveChanges();
return RedirectToAction("Index", new { id = review.ResturantId });
}
return View(review);
}
查看
@model OdeToFood.Models.Resturant
@{
ViewBag.Title = "Index";
}
<h2>Review For @Model.Name</h2>
@Html.Partial("_Reviews", Model.Reviews)
<p>
@Html.ActionLink("Create New", "Create", new {restaurantId = Model.Id})
</p>
看起来你正试图在一家不存在的餐厅上创建一个评论。 – DrewJordan
你有没有调试到你的'Create'方法来确保'review.RestaurantId'包含一个有效的标识符? –
您的'Create()'GET方法没有将'restaurantId'的值传递给视图,因此当您提交表单时,'review.ResturantId'的值为'0',因此您会得到该错误。并且在你的视图中使用视图模型,而不是数据模型 –