我正在使用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();
}
我没有破坏PROFILE和PROFILOTITOLODISTUDIO之间的任何关系,我只是在尝试在子表上进行更新,它是配置文件对象中的IDPROFILO外键。 ProfiloTitoloDiStudio得到了完美的增强!
我正在使用EF Core版本:3.0数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer我有两个表:PROFILO(主)和PROFILOTITOLODISTUDIO(详细信息),这是模型:PROFILO MODEL ...