【发布时间】:2017-04-23 16:02:23
【问题描述】:
我正在做一个项目,其中我有两个表代理和用户。用户表包含一个名为 agentid 的外键,它从代理表的 id 中获取值。所以在这里我需要删除代理表中的一个代理,同时它必须影响用户表,并且必须删除用户表中与被删除的代理具有相同 ID 的行。例如,假设如果我从代理表中删除代理 10,则必须删除 id 10 中的所有详细信息,同时也必须删除用户表中的代理 ID 为 10。当我简单地删除代理表中的代理时,它会生成一个错误
The DELETE statement conflicted with the REFERENCE constraint
我不知道如何解决我的问题,我的代码是
控制器
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(int id)
{
AgentMaster agentMaster = await db.AgentMasters.FindAsync(id);
db.AgentMasters.Remove(agentMaster);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
型号
public partial class AgentMaster
{
public AgentMaster()
{
this.Users = new HashSet<User>();
}
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<User> Users { get; set; }
}
数据库上下文
public NewEntities()
: base("name=NewEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
modelBuilder.Entity<AgentMaster>()
.HasOptional(c => c.Users)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}
这是我的控制器部分,当我尝试加入表并删除记录时,它总是显示相同的错误。谁能帮我找到解决我问题的方法??????
【问题讨论】:
-
你能展示一下 AgentMaster 模型吗?
-
在我的问题中包含了模型
-
首先你必须删除所有与 agerntmaster 相关的用户然后你可以删除 agentmaster
标签: asp.net-mvc linq asp.net-mvc-4 lambda http-post