zoukankan      html  css  js  c++  java
  • MVC+EF之多表关联数据更新

    多表关联数据更新
    关联数据有两种:一种是一对多,一种总是多对多
    eg:假设一个用户可以有任意多个角色,一个角色可以有任意多个用户。 下面来实现编辑某个用户时,显示该用户的角色进行编辑。
    步骤:
    1.先添加一个ViewModel, 用来表示角色是否分配给某个用户。
    2.打开UserRoleController,添加一个Edit的Action用来显示编辑页面。
    3.打开ViewsUserRoleIndex.cshtml, 增加一个编辑按钮  
    4.再根据Edit Action自动生成Edit View  
    5.修改相关内容,主要是两点:其一是部门,其二市角色(角色是通过一组checkbox来显示的。Checkbox显示数据库中所有角色,已分配给用户的会显示选中状态。通过勾选checkbox的方式来实现用户角色的更新)
    注意:角色少这样弄没问题,如果多的话经典的做法,可以用两个listbox,中间用箭头将左右两边的选项移动
    6.最后再完成HttpPost的Edit功能
    a.首先更新SysUser表:用model binder中的值更新entity: userToUpdate.可以看到,我们使用了白名单指定数据库中需要更新的字段。
    TryUpdateModel(userToUpdate,"",new string[] {"LoginName","Email","Password","CreateDate","SysDepartmentID"})
    b.再更新SysUserRole表:将数据库中值和编辑后的值进行比对,基本逻辑是:如果被选中了,原来没有的要添加;如果没被选中,原来有的要删除。
    UpdateUserRoles(selectedRoles, userToUpdate);
    注意:在UpdateUserRoles里,我新建了一个连接using (AccountContext db2=new AccountContext())如果用之前的db会报如下错误:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
    原生SQL使用总结
    A.原生SQL执行查询:
    需要返回实体模型,使用DbSet.SqlQuery (context会跟踪,等效于LINQ方式)
    需要返回其他类型,使用Database.SqlQuery
    B.原生SQL执行更新:
    使用Database.ExecuteSqlCommand

  • 相关阅读:
    MySQL的语句执行顺序
    linux 常用命令
    scala 样例类转json字符串
    Hadoop之——HDFS的RPC机制
    Hadoop之——机架感知配置
    hadoop-2.6.0-cdh5.14.0 集群高可用搭建
    spark 运行在YARN上参数配置
    日志框架SLF4J和log4j以及logback的联系和区别
    spark的rdd.saveastextfile可以追加写入hdfs同一个文件吗?
    ojdbc14-10.2.0.1.0 jar包下载
  • 原文地址:https://www.cnblogs.com/xue-er/p/8023218.html
Copyright © 2011-2022 走看看