因此,我正在使用npgsql作为提供程序的Entity Framework Core中执行此项目。有一个Case类,这是我的解决方案的主要类。对于一对多关系,还有CaseCustomFieldValue类。这是他们的代码:
public class Case
{
public int CaseId { get; set; }
public List<CaseCustomFieldValue> CaseCustomFieldValues { get; set; }
}
public class CaseCustomFieldValue
{
public int CaseCustomFieldValueId { get; set; }
public string Value { get; set; }
public int CaseId { get; set; }
public virtual Case Case { get; set; }
}
想法是CaseCustomFieldValue将与案例一起发布/修改/删除,但是当我尝试更新CaseCustomFieldValue的值时,它不会更改。所以我将其添加到我的PUT方法中:
_context.Entry(@case.CaseCustomFieldValues).State = EntityState.Modified;
结果在上一行失败并显示错误:
InvalidOperationException:实体类型 找不到“ List
”。确保 实体类型已添加到模型中。
我想我做了DbContext类中所需的一切:
modelBuilder.Entity<Case>()
.HasMany(a => a.CaseCustomFieldValues);
modelBuilder.Entity<Case>().ToTable("Cases");
modelBuilder.Entity<CaseCustomFieldValue().ToTable("CaseCustomFieldValues");
public DbSet<Case> Cases { get; set; }
public DbSet<CaseCustomFieldValue> CaseCustomFieldValues { get; set; }
我删除了数据库,并从数据库更新中重新创建了它,但这没有帮助。
答案 0 :(得分:0)
我使用不正确的方法开始跟踪模型时遇到此问题。我在模型列表中使用的是AddAsync而不是AddRangeAsync。
答案 1 :(得分:0)
只需检查您传递的对象是 DTO 还是实体,人们在添加实体时经常会感到困惑,但最终传递了 DTO。