Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入数据库时出错-值不能为null_C#_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

C# 插入数据库时出错-值不能为null

C# 插入数据库时出错-值不能为null,c#,entity-framework,asp.net-mvc-5,C#,Entity Framework,Asp.net Mvc 5,我在数据库中创建了一个名为AccountCoupon的表,该表在DataModel.tt中的AccountCoupon.cs中定义为: public partial class AccountCoupon { public string CouponID { get; set; } public int Days { get; set; } } 然后,我使用可用字符的字符数组和for循环随机创建ID,然后将其添加到数据库中: public ActionResult Create

我在数据库中创建了一个名为
AccountCoupon
的表,该表在
DataModel.tt
中的
AccountCoupon.cs
中定义为:

public partial class AccountCoupon
{
    public string CouponID { get; set; }
    public int Days { get; set; }
}
然后,我使用可用字符的字符数组和for循环随机创建ID,然后将其添加到数据库中:

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();
}
public ActionResult Create()
{
如果(!string.IsNullOrWhiteSpace(请求[“CouponDays”]))
{
整数天=0;
int.TryParse(请求[“CouponDays”],超出天);
如果(天数>0)
{
字符串cID=“”;
对于(int i=0;i<10;i++)
{
cID+=couponCharacters[rand.Next(couponCharacters.Count())];
}
添加(新的AccountCouncil{CouponID=cID,Days=Days});
db.SaveChanges();
返回操作(“索引”);
}
返回操作(“索引”);
}
返回视图();
}

但是,当我尝试将其添加到数据库时,它抛出了一个错误,指出
CouponID
为NULL,并且插入失败。这对我来说是不可能的,因为我只是给它赋值。

每次在循环中都创建一个名为
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 });
string ID=string.Empty
对于(int i=0;i<10;i++)
ID+=couponCharacters[random.Next(couponCharacters.Count())];
Add(新的accountconsupt{CouponID=ID,Days=iDays});

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


索引“couponCharacters.Count()”处的项不存在,因此为空。您没有收到编译错误吗?从您发布的
ID
来看,它似乎超出了数据库的范围call@greenhorn第二个Random.Next()参数是排他性上限,因此Random将永远不会生成值coupnCharacters.Count(),因此它就像已发布一样有效。
ID
根据对问题的编辑不为null。。。这是一个方法和连续代码吗
空字符串
不是
null
,因此即使for循环没有更改任何内容,也不应该是ID为null的错误。我调试了代码,但它对我来说非常有效(只在循环内的行末尾添加了
,在
couponCharacters
数组中添加了几个虚拟字符),因此,我找不到发布的(更新的)代码有任何问题。糟糕的是,我实际上在循环之外有字符串声明,我将更新我的问题