我試圖在我的EF代碼優先配置的Seed()方法中替換所有包含http:
和https:
的URL。我有以下幾點:用Linq/C更新表中的每個項目#
var context = new DbContext(); // contains public DbSet<Doc> Docs { get; set; }
var docs = context.Docs.ToList(); // dbcontext
foreach (var doc in docs)
{
if (doc.ImageContent != null && doc.ImageContent.Contains("https:"))
doc.ImageContent = doc.ImageContent.Replace("https:", "http:");
}
context.saveChanges
但每當我運行此(從我的數據庫遷移我的種子法 - 所以我不能因爲據我所知調試) - 我得到以下錯誤:
System.Data.DataException: An exception occurred while initializing the database. See the InnerException for details. ---> System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities.
如果我將SaveChanges註釋掉,甚至會發生此錯誤。該字段只是一個非必需的字符串,所以我不認爲由於數據類型不正確而導致驗證失敗......還有什麼可能呢?
除了這個問題,可能有可能你忘了'context.Entry(doc).State = EntityState.Modified' –
@AlbertoLeón - 剛試過並得到了同樣的錯誤 – SB2055
在你的saveChanges之後有沒有paren這樣的。 .. _db.SaveChanges();從你註釋掉這一行開始,問題不是問題。你也可以嘗試使用NuGet來讓NLog幫助調試,這就是我調試種子的方法。 – JabberwockyDecompiler