Update子记录EF Core 3.0中的错误实体之间的关联已被切断,但该关系被标记为'Required'

问题描述 投票:0回答:1

我正在使用EF Core版本:3.0数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer

我有两个表:PROFILO(主)和PROFILOTITOLODISTUDIO(详细信息)这是模型:

PROFILO模型

 public partial class Profilo
{
    public Profilo()
    {
        ProfiloTitoloDiStudio = new List<ProfiloTitoloDiStudio>();
    }

    [Key]
    public Guid IdProfilo { get; set; }
    [Required]
    [StringLength(256)]
    public string Nome { get; set; }
    [StringLength(256)]
    public string Cognome { get; set; }

    [InverseProperty("IdProfiloNavigation")]
    public virtual IList<ProfiloTitoloDiStudio> ProfiloTitoloDiStudio { get; set; }
}

PROFILOTITOLODISTUDIO模型

public partial class ProfiloTitoloDiStudio
{
    [Key]
    public int IdProfiloTitoloDiStudio { get; set; }
    public Guid IdProfilo { get; set; }
    [Required]
    [StringLength(256)]
    public string DenominazioneCorsoStudio { get; set; }
    [ForeignKey(nameof(IdProfilo))]
    [InverseProperty(nameof(Profilo.ProfiloTitoloDiStudio))]
    public virtual Profilo IdProfiloNavigation { get; set; }
}

PROFILOTITOLODISTUDIO表中的IdProfilo外键必须不为空

在控制器的“编辑”操作中,我接收到具有视图边界的字段的对象作为输入,即使我不更改任何值,savechanges()始终返回错误:

InvalidOperationException:实体'Profilo'和'ProfiloTitoloDiStudio'与键值'{IdProfilo:45c42779-39b6-4047-91d1-12253a79b7f6}'之间的关联已被切断,但是该关系被标记为'Required'或隐式必需,因为外键不可为空。如果在切断所需的关系时应删除从属/子实体,请设置该关系以使用级联删除。

这是保存代码:

public async Task<IActionResult> Edit(Profilo profiloinput)
    {


            var _profiloDB = await _dbcontext.Profilo
                                               .Include(p => p.ProfiloTitoloDiStudio)
                                               .SingleOrDefaultAsync(p => p.IdProfilo == profiloinput.IdProfilo);

            _profiloDB.Nome = profiloinput.Nome;
            _profiloDB.Cognome = profiloinput.Cognome;


            _profiloDB.ProfiloTitoloDiStudio = profiloinput.ProfiloTitoloDiStudio;


            var x = await _dbcontext.SaveChangesAsync();


    }

我没有破坏PROFILEPROFILOTITOLODISTUDIO之间的任何关系,我只是在尝试在子表上进行更新,它是配置文件对象中的IDPROFILO外键。 ProfiloTitoloDiStudio得到了完美的增强!

我正在使用EF Core版本:3.0数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer我有两个表:PROFILO(主)和PROFILOTITOLODISTUDIO(详细信息),这是模型:PROFILO MODEL ...

entity-framework .net-core savechanges ef-core-3.0
1个回答
0
投票
我解决了,在某些帖子中已经报告了此解决方案,但不是很清楚,问题出在两个表之间的关系的设置上,该设置是在[[DbContext
© www.soinside.com 2019 - 2024. All rights reserved.