EF Linq判断数据是新增,删除,还是修改


C# 全选
/// <summary>
/// 导入新的单据管理
/// </summary>
/// <returns></returns>
[HttpGet]
public GZAPIResultArray<base_DataSN> import()
{
	SNDataHelper helper = new SNDataHelper();
	helper.GetSNCollonection();
	var snData = helper.SNModels;
	var dbData = entities.base_DataSN.ToList();
	
	// 获取新增的数据,传入数据在数据库中不存在
	var newData = snData.Where(w => !dbData.Any(a => a.DocCode == w.DocCode));
	// 获取删除的数据,数据库中存在,但是传入数据中没有
	var delData = dbData.Where(w => !snData.Any(a => a.DocCode == w.DocCode));

	var delCodes = delData.Select(s => s.DocCode).ToList();
	// 执行删除
	entities.base_DataSN.Where(w => delCodes.Contains(w.DocCode)).BatchDelete();

	// 新增数据
	List<base_DataSN> addData = new List<base_DataSN>();
	foreach (var v in newData)
	{
		addData.Add(new base_DataSN()
		{
			RowID = ServerLibs.IDHelper.GetID(),
			DocCode = v.DocCode,
			DocName = v.DocName,
			DocHeader = v.DocHeader,
			DocType = v.DocType.ToString(),
			Length = v.Length,
			Seed = v.seed,
			Separate = v.Separate,
			Demo = "",
			CreateTime = DateTime.Now,
			UpdateTime = DateTime.Now
		});
	}
	
	// 修改数据
	foreach (var v in dbData.Where(w => snData.Any(a => a.DocCode == w.DocCode)))
	{
		var newObj = snData.Where(w => w.DocCode == v.DocCode).FirstOrDefault();
		v.DocName = newObj.DocName;
		v.DocHeader = newObj.DocHeader;
		v.DocType = newObj.DocType.ToString();
		v.Length = newObj.Length;
		v.Seed = newObj.seed;
		v.Separate = newObj.Separate;
		v.Demo = "";
		v.UpdateTime = DateTime.Now;
	}
	entities.SaveChanges();

	entities.BulkInsert(addData);
	entities.SaveChanges();
	return List();
}
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:智能转换文件大小单位B,KB,MB,GB
下一篇:网站置灰
评论列表

发表评论

评论内容
昵称:
关联文章

EF Linq判断数据删除修改
EF并发处理,防止并发修改数据
Blazor春天寒风里的挣扎
Blazor春天寒风里的挣扎
EF Linq查找所有子节点或者所有父节点
Linq to SQL语句基础讲解
git删除全部提交历史,成为一个的仓库
EntityFramework Linq 获得所有数据,包括子节点
EntityFramework Linq 查询数据获得树形结构
了解LINQ
.net中使用Linq 判断两个集合是否有交集的集合类
C# .net WEB判断当前环境是否调试
AgGrid使用CellRendererFramework后,修改数据调用applyTransaction数据没刷新
扫盲篇-什么分布式任务调度
git 放弃本地修改
EF 值转换
EF事务提交
EF Code First
GIT彻底删除文件以及历史记录
日志级别的选择:Debug、Info、Warn、ErrorFatal

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码