【发布时间】:2017-06-10 12:27:44
【问题描述】:
我正在使用 Entity Framework 6 Code First MVC5。这是我的课程:
Offer.cs
public class Offer
{
public int Id { get; set; }
[Required]
public string ListOffer { get; set; }
}
这是我的控制器
[HttpPost]
public ActionResult Create(OfferFormViewModel viewModel)
{
var offer = new Offer
{
ListOffer = viewModel.ListOffer,
};
_context.Offers.Add(offer);
_context.SaveChanges();
return RedirectToAction("MyOffers", "Offers");
}
OfferFormViewModel.cs
public class OfferFormViewModel {
public int Id { get; set; }
[Required]
public string ListOffer { get; set; }
}
当我尝试在 offer 表中插入一条记录时,它在我的机器上运行良好,并将记录插入到数据库中,它会自动为 id 列分配值。但是当我部署应用程序时,它会抛出异常
System.Data.SqlClient.SqlException:无法将值 NULL 插入到列“Id”、表“DefaultConnection.dbo.Offers”中;列确实 不允许空值。插入失败。声明已终止。
我的问题是为什么它在部署应用程序时尝试在 Id 列中插入 NULL,而不是在我在未部署的情况下运行代码时?
【问题讨论】:
-
问题很可能出在数据库端。 Id 应该是一个自动增量字段(在 SQL Server 中应该是 Identity)
标签: entity-framework asp.net-mvc-5