大佬们帮忙看看可好 在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时
下面是代码:
await wc.IsWPName(hs);
public async Task IsWPName(HashSet<string> hs)
{
using (var wcSelvice = new DAL.WorkCenterSelvice())
{
//分离出工作中心
List<string> wcName = new List<string>();
//分离出工序
List<string> wpName = new List<string>();
foreach (var item in hs)
{
string[] s = item.Split(',');
wcName.Add(s[0]);
wpName.Add(s[1]);
}
//转换工序ID
List<int> wpID = new List<int>();
using (var wpSelvice = new DAL.WP_TableSelvice())
{
foreach (var item in wpName)
{
wpID.Add(wpSelvice.GetAllWhere(w => w.WP_Name == item).Select(s => s.Id).FirstOrDefault());
}
}
//判断工作中心中是否存在该工序 若不存在则添加
for (int i = 0; i < wcName.Count; i++)
{
string wcNamestr = wcName[i];
//得到工作中心数据
var wcS = wcSelvice.GetWhere(w => w.WCName == wcNamestr).FirstOrDefault();
////查询时已经用到AsNoTracking()
string temps = wcS.WPID;
// wcS.WPID = "1,2,3,4,5,6";
//判断是否为空wpID
if (wcS.WPID == null)
{
wcS.WPID = wpID[i] + ",";
}
else
{
bool bo = true;
//分离出工作中心的工序 判断此次添加的工序是否存在
string[] st = temps.Split(',');
for (int j = 0; j < st.Length; j++)
{
if (st[j] == "") continue;
else
{
if (st[j] == wpID[i].ToString())
{
bo = false;
break;
}
}
}
//添加的工序不存在该工作中心
if (bo)
{
string tempwp = temps + wpID[i] + ",";
wcS.WPID = tempwp;
}
else
{
continue;
}
}
//修改
await wcSelvice.EditAsync(wcS, true);
}
}
}
当数据库WPID字段Wie空时可以修改成功 但是一旦有数据了就失败了
但是第二次运行程序它可以走过第一次错的数据 然后下一段数据继续报错
public async Task EditAsync(T t, bool saved = true) //异步操作
{
DbContext.Configuration.ValidateOnSaveEnabled = false; //关闭校验
DbContext.Entry(t).State = System.Data.Entity.EntityState.Modified;
if (saved)
{
await DbContext.SaveChangesAsync();
DbContext.Configuration.ValidateOnSaveEnabled = true; //关闭校验
}
}
...全文
相关推荐
使用实体框架重新附加实体图
这涉及到将这些分离的实体重新连接到新的或现有的EF上下文,并指定它们的状态,通常是“未更改”(Unchanged),表明它们在分离期间没有发生改变,或者“已修改”(Modified),表示它们可能已经发生了更新
C#获取变更过的DataTable记录的实现方法
Current:当前值,当RowState为Deleted时无效。2. Original:原始值,当RowState为Added或Unchanged时无效。3.
比较2个datatable内容是否相同的方法
本文主要探讨了如何比较两个DataTable对象的内容是否相同,特别是在某些情况下,我们不希望行状态的改变(如Modified)被视为内容变化。在这些场景下,我们需要自定义方法来判断何时真正需要保存
ef.rar_C# EF_ef
实体状态(如Unchanged、Added、Modified和Deleted)对跟踪实体的变更至关重要,这部分内容会讲解如何正确地管理这些状态。5.
java实现变更文件查询的方法
文件的最后修改时间是记录文件最近一次被修改、创建或访问的时间戳。通过比较这个时间戳,我们可以判断文件是否自上次查询以来有所变动。下面将详细讲解如何使用Java来实现这一功能。


