.net core EF Core 3.0附加文件映射和更新

.net core EF Core 3.0附加文件映射和更新,.net-core,entity-framework-core,.net Core,Entity Framework Core,伙计们 我对其他字段的映射和更新有问题 让我们来上一节简单的课 public class User { [Key] public Guid Id { get; set; } public string SameField { get; set; } public AuxClass AuxClass { get; set; } } public class AuxClass { public Guid Id { get; set; }

伙计们

我对其他字段的映射和更新有问题

让我们来上一节简单的课

public class User
{
    [Key]
    public Guid Id { get; set; }

    public string SameField { get; set; }
    public AuxClass AuxClass { get; set; }    
}

public class AuxClass
{
    public Guid Id { get; set; }

    public string? AuxField { get; set; }

    public Guid UserId { get; set; }
    public User User { get; set; }
}
...
DbSet<User> UserDb { get; set; }
返回如下所示的对象:

{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala",
    AuxClass = null
}
{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala",
    AuxClass = 
    {
        Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A83",
        AuxField = "lalala",
        UserId = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
        User = User
    }
}
但我明白了

{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala",
    AuxClass = 
    {
        Id = "00000000-0000-0000-0000-000000000000",
        AuxField = null,
        UserId = "00000000-0000-0000-0000-000000000000",
        User = null
    }
}
那么,第一个问题——为什么?第二个问题-如何配置上下文不通过请求创建这样的对象

第三个问题

假设我有类User的对象,如下所示:

{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala",
    AuxClass = null
}
{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala",
    AuxClass = 
    {
        Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A83",
        AuxField = "lalala",
        UserId = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
        User = User
    }
}
我发出一个请求
var tst=context.UserDb.AsNoTracking().FirstOrDefaultAsync(),因此,我从数据库中获取了部分对象并进行了更改:

{
    Id = "AD8E1461-D6E8-4A04-8CFE-08D74FED1A72",
    SameField = "lala12345",
    AuxClass = null
}
我想在数据库中更新此对象。我想这样写代码

context.UserDb.Update(tst);
await context.SaveChangesAsync(true);
不删除存储在数据库中的对象中的
AuxClass
字段。怎么可能呢


谢谢。

您应该将关系成员定义为虚拟成员,并解决所有问题:

public class User
{
    [Key]
    public Guid Id { get; set; }

    public string SameField { get; set; }
    public virtual AuxClass AuxClass { get; set; }    
}

public class AuxClass
{
    public Guid Id { get; set; }

    public string? AuxField { get; set; }

    public Guid UserId { get; set; }
    public virtual User User { get; set; }
}