【问题标题】:Entity Framework Core migrated from 2.2 to 3.1: Updating Foreign Key Object not workingEntity Framework Core 从 2.2 迁移到 3.1:更新外键对象不起作用
【发布时间】:2020-11-13 21:24:52
【问题描述】:

我也使用实体框架核心从 .net Core 2.2 迁移到 3.1。 现在我有这样的东西,我不知道为什么更新不起作用(它在 2.2 中起作用):

public abstract class BaseEntity
{
    public int Id { get; set; }
}

public class ObjA : BaseEntity
{
    public int ObjBId {get; set; }
    public ObjB ObjB {get; set; }
}

public class ObjB : BaseEntity
{   

}

var listOfObjA = _dbContext.AObjects.Where(a => a.ObjBId == null);
if(listOfObjA.Any())
{
    ObjB objB = new ObjB();
    _dbContext.BObjects.Add(objB);
    foreach(var objA in listOfObjA)
    {
        objA.ObjB = objB;
        _dbContext.Entry(objA).CurrentValues.SetValues(objA);
    }
    _dbContext.SaveChanges();
}

代码运行时没有错误,但 ObjB(和 ObjBId)属性未更新,在 SaveChanges 和创建 ObjB 后为空。

【问题讨论】:

  • 你能分享你的AObjectObjB吗?
  • 另外,你能发布你的错误信息吗?

标签: .net-core entity-framework-core


【解决方案1】:

而不是:

 objA.ObjB = objB;
 _dbContext.Entry(objA).CurrentValues.SetValues(objA);

尝试:

 context.Entry(objA).Property(u => u.ObjB).CurrentValue = objB;
context.Entry(objA).Property(u => u.ObjB).IsModified = true;

【讨论】:

    猜你喜欢
    • 2020-05-27
    • 2021-08-31
    • 2018-06-08
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2020-03-09
    • 2020-08-22
    • 2020-02-03
    相关资源
    最近更新 更多