插入数据库时​​出错 - 值不能为空

时间:2015-07-20 12:02:55

标签: c# entity-framework asp.net-mvc-5

我在我的数据库中创建了一个名为AccountCoupon的表,该表在AccountCoupon.cs的{​​{1}}中定义为:

DataModel.tt

然后我使用可用字符的char数组和for循环随机创建ID,然后将其添加到数据库中:

public partial class AccountCoupon
{
    public string CouponID { get; set; }
    public int Days { get; set; }
}

但是,当我尝试将其添加到数据库时,它会抛出错误,指出public ActionResult Create() { if (!string.IsNullOrWhiteSpace(Request["CouponDays"])) { int days = 0; int.TryParse(Request["CouponDays"], out days); if (days > 0) { string cID = ""; for (int i = 0; i < 10; i++) { cID += couponCharacters[rand.Next(couponCharacters.Count())]; } db.AccountCoupons.Add(new AccountCoupon { CouponID = cID, Days = days }); db.SaveChanges(); return RedirectToAction("Index"); } return RedirectToAction("Index"); } return View(); } 为NULL,并且插入失败。对我来说这是不可能的,因为我只是为它分配了一个值。

2 个答案:

答案 0 :(得分:0)

您每次在循环内创建一个名为ID的字符串实例。所以它只存在于循环内部。试试

string ID = string.Empty
for (int i = 0; i < 10; i++)
    ID += couponCharacters[random.Next(couponCharacters.Count())];

db.AccountCoupons.Add(new AccountCoupon { CouponID = ID, Days = iDays });

答案 1 :(得分:0)

问题出在表StoreGeneratedPattern属性的属性CouponID中。它默认设置为Identity的值,这会导致错误,因为无法自动生成字符串。将值设置为None解决了问题:

enter image description here