繁体   English   中英

EntityValidationErrors EF6更新记录

[英]EntityValidationErrors EF6 Update Records

我需要通过实体框架和Windows服务更新表内的记录集。 我已经正常完成了,没有任何错误,但是现在出现以下错误,

一个或多个实体的验证失败。 有关更多详细信息,请参见'EntityValidationErrors'属性。

当我检查错误时,具有VARCHAR(12)属性的Nic是其主要原因。 在使用Nic列使用VARCHAR(10)之前,我将其更新为VARCHAR(12)。 但是,当我尝试输入字符串长度为12的值时,尽管表和模型已设置为12个字符,但仍收到该错误。

有人知道这种奇怪行为的原因吗?

       public void UpdateCustomers()
    {
        try
        {
            CustomerLoyaltyContext newContext = new CustomerLoyaltyContext();
            List<Customer_Update> customers = this.GetUpdatedCustomers();
            foreach (var cu in customers)
            {
                var cst = newContext.Customers.Where(a => a.MembershipNumber == cu.MembershipNumber).FirstOrDefault();
                if (cst != null)
                {
                    cst.MobileNumber = cu.MobileNumber;
                    //updating other records including Nic

                    newContext.Customers.Add(cst);
                    newContext.Entry(cst).State = EntityState.Modified;
                    newContext.SaveChanges();

                    tus.WriteToFile("User by mobile" + "[ " + cu.MobileNumber + " ]" + " Updated : [ " + cu.MembershipNumber + " ]\n");
                }
                else
                {
                    tus.WriteToFile("User by mobile" + "[ " + cu.MobileNumber + " ]" + " not found : [ " + cu.MembershipNumber + " ]\n");
                }
            }
        }
        catch (Exception ex)
        {
            tus.WriteToFile("Error Occured");
        }
    }

我的模特有

[MaxLength(12)]
public string Nic{get;set;}

而且我的数据库Nic列也具有相同的属性,

我尝试将以下代码添加到OnModelCreating方法中,但没有得到任何改善,

Database.SetInitializer<MyContext>(null);

在创建记录时,我没有任何问题。 有人可以帮我吗?

我认为您的问题是由于数据库和模型之间的不匹配所致,请尝试更新EF模型,然后一切都会正常。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM