【发布时间】:2020-07-28 11:29:21
【问题描述】:
我正在使用 EF Core 版本:3.0 数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer
我有两个表:PROFILO(主)和PROFILOTITOLODISTUDIO(详细) 这是模型:
简介模型
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 外键必须为 NOT NULL
在控制器的编辑操作中,我收到带有视图边界字段的对象作为输入,即使我不更改任何值,savechanges () 总是返回错误:
InvalidOperationException:实体 'Profilo' 和 'ProfiloTitoloDiStudio' 与键值 '{IdProfilo: 45c42779-39b6-4047-91d1-12253a79b7f6}' 之间的关联已被切断,但该关系被标记为“必需”或隐式需要,因为外键不可为空。如果在切断所需关系时应删除依赖/子实体,则将关系设置为使用级联删除。
这是保存代码:
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完美增强!!!
【问题讨论】:
标签: entity-framework .net-core savechanges ef-core-3.0