具有相同的ID MVC两个不同的表
我做的一个项目,在我用两个表代理和用户如何删除行。用户表包含一个名为agentid的外键,它从代理表的id中获取值。所以在这里我需要删除代理表中的代理,同时它必须对用户表生效,并且必须删除用户表中具有与删除的代理相同标识的行。例如,假设如果我从代理表中删除了代理10,则必须删除ID 10中的所有细节,同时还必须删除用户表中具有10的agentid。当我只需删除代理表的代理,它会生成具有相同的ID MVC两个不同的表
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; }
}
DbContext
public NewEntities()
: base("name=NewEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
modelBuilder.Entity<AgentMaster>()
.HasOptional(c => c.Users)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}
这是我的控制器部分,当我试图加入表和删除记录它总是显示了同样的错误。任何人都可以请帮我找到解决我的问题?????
这个错误时,你的表是依赖于另一个表中的情况下,其one to many
关系 所以你dbcontext
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AgentMaster>()
.HasOptional(c => c.Users)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}
对不起,我没有得到这个答案,你可以请解释这个或什么是这个重写OnModelCreating(DbModelBuilder modelBuilder),没有得到那个linehow我可以用我的代码更改那部分吗? – user355
你只需要在dbcontext中添加这个,你可以检查这个[DbContext.OnModelCreating方法](https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext.onmodelcreating(v = vs .113).aspx) – Usman
@ user355你显示的代码db.AgentMasters你如何初始化数据库? – Usman
你没有任何活动的asp.net,但可以启用在DBMS两条表之间的关系层叠选项。
我该怎么做这个级联删除?通过加入两个表并删除结果? – user355
你会在这个帖子中被问清楚标记:[链接](http:// *。com/questions/43573410/how-to-delete-rows-of-two-different-table-having-same-id-mvc/43573495#answer-43573945) –
您不能直接删除是由与外键的另一个表引用一个表的记录。
您必须显式删除用户表的相关行也可以使用ON DELETE CASCADE自动删除用户表的行。
你能解释一下如何做这个级联删除。对不起,因为我是新来的mvc,并没有完全得到如何做到这一点删除操作 – user355
添加这个您能不能告诉AgentMaster模型发生? – Usman
已在我的问题中包含模型 – user355
首先你必须删除所有用户与agerntmaster相关的东西,然后你可以删除代理人 – Usman