//ID自增但不是主键的情况
public int Update_join<TEntity>(TEntity entity) where TEntity : class
{
dbcontext.Set<TEntity>().Attach(entity);
PropertyInfo[] props = entity.GetType().GetProperties();
foreach (PropertyInfo prop in props)
{
if(prop.Name=="ID")continue;
if (prop.GetValue(entity, null) != null)
{
if (prop.GetValue(entity, null).ToString() == "&nbsp;")//一些属性由于前台的原因 传过来的值会是&nbsp; 这里做一下处理
dbcontext.Entry(entity).Property(prop.Name).CurrentValue = null;
dbcontext.Entry(entity).Property(prop.Name).IsModified = true;
}
}
return dbcontext.SaveChanges();
}

调用方式:db.Update_join(partySummaryTableEntity);

 //根据ViewModel更新实体的部分属性
public int UpdateEntityFields<TEntity>(TEntity entity, List<string> fileds) where TEntity : class
{
if (entity != null && fileds != null)
{
dbcontext.Set<TEntity>().Attach(entity);
var SetEntry = ((IObjectContextAdapter)dbcontext).ObjectContext.
ObjectStateManager.GetObjectStateEntry(entity);
foreach (var t in fileds)
{
SetEntry.SetModifiedProperty(t);
}
}
return dbcontext.SaveChanges();
}
//上面的参数list是将ViewModel的属性整理成的集合,方法如下
 public static List<string> GetDeleteFiles()
{
List<string> list = new List<string>();
PropertyInfo[] props = new DeleteEntity().GetType().GetProperties();//得到ViewModel属性集合
foreach (PropertyInfo propertyInfo in props)
{
list.Add(propertyInfo.Name);
}
return list;
}

PS:eg一个ViewModel:

 public class DeleteEntity : INDeleteAudited
{
public bool F_DeleteMark { get; set; } /// <summary>
/// 删除实体的用户
/// </summary>
public string F_DeleteUserId { get; set; } /// <summary>
/// 删除实体时间
/// </summary>
public DateTime? F_DeleteTime { get; set; } }


EF中更新操作 ID自增但不是主键 ;根据ViewModel更新实体的部分属性的更多相关文章

  1. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

    [CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问 ...

  2. EF中主表和附表一起提交的话,如果主附表的主键外键已经设定。

    EF中主表和附表一起提交的话,如果主附表的主键外键已经设定,如果新增同时新增主表和附表的记录,那么在EF同时提交时,不需要人为的设定附表的主表的主键值,EF会自动为附表添加外键值.

  3. MYSQL主键存在则更新,不存在则插入的解决方案(ON DUPLICATE KEY UPDATE)

    经常我们使用的最简单的数据库操作就是数据的更新,删除和插入,对于批量删除和插入的方法相信大家都很清楚,那么批量更新估计有的人就不知道了,并且还有批量插入,在插入时若有主键冲突则更新的操作,这在EAV模 ...

  4. SQL中的每一张表都必须设有主键吗

    问题描述: 公司的数据库表有时候会看到没有主键的,SQL中的每一张表都必须设有主键吗? 主键的作用: 1)保证实体的完整性: 2)加快数据库的操作速度: 3)在表中添加新记录时,数据库ACCESS会自 ...

  5. java中如何操作数据库(增删改查)

    EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满足条件的实体Bean.实体B ...

  6. SQL Server 如何添加删除外键、主键,以及更新自增属性

    1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT ...

  7. Mybatis中,当插入数据后,返回最新主键id的几种方法,及具体用法

    insert元素 属性详解 其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成 ...

  8. 后台操作日志,插入数据获取的该数据主键ID为null

    代码如下: @Override public void saveTopicResource(TopicResourceModel model, Integer userId) { TopicResou ...

  9. 在oracle中查询已知表名的表中所有字段名,每个字段是否是主键,是否是外键,是否为空的sql语句

    查询表的所有列及其属性:select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c ...

随机推荐

  1. H5内联视频总结

    概述 之前写过h5内联视频,总结了一下当时做微信视频类h5的心得,随着工作中越来越多的接触h5,我有了更多的心得与经验,记下来供以后开发时参考,相信对其他人也有用. 内联视频的播放 内联视频需要用户主 ...

  2. Metasploit Framework(4)信息收集

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 使用场景: Kali机器一台:192.168.163. ...

  3. OAuth2简易实战(一)-四种模式

    1. OAuth2简易实战(一)-四种模式 1.1. 授权码授权模式(Authorization code Grant) 1.1.1. 流程图 1.1.2. 授权服务器配置 配置授权服务器中 clie ...

  4. Spring autowire自动装配 ByType和ByName

    不使用自动装配前使用的是类的引用: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...

  5. css、css3总结

    关于figure元素和figcaption元素的解释与应用: https://www.w3cplus.com/html5/quick-tip-the-right-way-to-use-figure-a ...

  6. iReport 5.6.0 启动闪退的问题 解决方案

    问题描述 本人使用的Windows版本的 iReport 5.6.0,安装成功后,双击桌面上的iReport-5.6.0图标,出现了闪退,无法正常启动的现象.现象如下: 问题原因 iReport 5. ...

  7. springboot项目部署云服务器

    Springboot项目部署云服务器 springboot项目部署云服务器还是挺简单的 首先你要有java运行环境,就是jdk的安装,如果还没有装没有参考安装:阿里云ECS建网站(建站)超详细全套完整 ...

  8. 【原创】《windows驱动开发技术详解》第4章实验总结一

    目录 1 实验要求 2 编写过程 2.1 确立整体架构 2.1.1 入口函数——DriverEntry 2.1.2 自定义创建设备函数——CreateDevice 2.1.3 卸载函数——Driver ...

  9. 【原创】空中鼠标一DMP欧拉角

    正在搞六轴传感器,今天移植了MPU6050的MothionDriver的DMP固件到STM32上了,能够稳定地输出欧拉角(也就是俯仰角.航向角.横滚角)和XYZ三轴加速度值,在电脑的上位机模拟了装置的 ...

  10. docsify网站文档工具用法总结

    docsify , 网站文档动态生成工具,类似gitbook 特性 无需构建,写完文档直接发布 容易使用并且轻量 (~19kB gzipped) 智能的全文搜索 提供多套主题 丰富的 API 支持 E ...