问题:
在Linq中怎么删除一对多或多对多的映射关系表?
在MVC的Models的打开数据库文件
双击XXX.edmx
得到一张画好的Linq风格的数据库关系图:
比如要删除表User和表Role的映射关系的话,只需要使用其导航属性下的Roles,将其遍历删除:
User user = context.Users.Single(x => x.UserId == id);
while(user.Roles.Count>0)
{
Role x = user.Roles.First();
user.Roles.Remove(x);
}
注意:这个和普通的SQL操作不一样,Linq是面向对象的,因此不需要到
UserRoles映射表删除记录!
实际上,这个导航属性即由UserRoles映射表自动生成的,在SQL风格的数据库关系图中存在UserRoles映射表,但在Linq风格的数据库关系图中却没有这张表了,而是Linq自动将这张表转换成导航属性!
SQL风格的数据库关系图:
精华注:
在级联删除中,可以根据Linq风格的数据库关系图中导航属性顺序删除下来即可!
问题:
怎么利用默认以更加方便?
如果一个按钮类型是submit,那么,它将自动执行和View名相同的action,这个是缺省值。
如果理解这个问题,那么在编程的时候就能省下许多事,包括submit提交,return View()等。