我需要通過實體框架和Windows服務更新表內的一組記錄。我通常沒有任何錯誤,但現在我得到以下錯誤,EntityValidationErrors EF6更新記錄
驗證失敗的一個或多個實體。有關更多詳細信息,請參閱「EntityValidationErrors」屬性。
當我檢查錯誤Nic其中有VARCHAR(12)屬性是主要原因。在使用VARCHAR(10)創建了Nic列之前,我將其更新爲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;}
和我的數據庫尼克列具有相同的屬性也
我嘗試下面的代碼我OnModelCreating方法,但沒有得到任何好轉,
Database.SetInitializer<MyContext>(null);
在創作記錄我沒有問題。有人可以幫助我嗎?
更改模型後,你有'$ update-database'嗎? – pijemcolu
是的,但目前尚未實施。我的客戶端不允許將服務器連接到互聯網,並且由於安全考慮,不允許安裝第三方應用程序。因此,我正在對本地安裝程序進行所有遷移,並替換客戶端服務器中的文件和整個數據庫。 – thilanka1989