【发布时间】:2023-03-26 11:16:01
【问题描述】:
我正在尝试在我的 EF 代码优先配置的 Seed() 方法中将所有包含 http: 的 url 替换为 https:。我有以下内容:
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 - 刚刚尝试过,得到了同样的错误
-
像这样的 saveChanges 之后是否有括号... _db.SaveChanges();问题不是问题,因为您注释掉了该行。您也可以尝试使用 NuGet 让 NLog 帮助调试,这就是我调试播种的方式。
标签: c# .net linq entity-framework ef-code-first