有一個Excel的資料,要匯入資料庫內的tableA,此資料表的cID不會重複,程式碼如以下。
我想問的事情是,為何不需要註解的那一行,程式已經判定我的資料是修改模式?
using (AYEntities db=new AYEntities())
{
var data_tableA = db.tableA.Where(t => t.bCANCEL == false).ToList();
var Excel_tableA = (from row in dt.AsEnumerable()
select new tableA
{
cNAME = row.Field<string>("姓名"),
cID = row.Field<string>("編號"),
cRe = row.Field<string>("備註"),
dUPD = DateTime.Now,
}).ToList();
var Dt = (from t1 in data_tableA
from t2 in Excel_tableA
where t1.cID == t2.cID
select new { t1, t2 }).ToList();
Dt.ForEach(t =>
{
t.t1.cNAME = t.t2.cNAME;
t.t1.cRe = t.t2.cRe;
t.t1.dUPD = DateTime.Now;
});
var Dt2 = Dt.Select(t => t.t1).ToList();
//Dt2.ForEach(t=> db.Entry(t).State = EntityState.Modified);
db.SaveChanges();
}
因為你的資料集是從
data_tableA = db.tableA.Where(t => t.bCANCEL == false).ToList();...
拿來的,EntityFrame預設會去追蹤
所以不需要更改EntityState他就是更新的動作
有錯誤的話請指教
你可以下中斷點在
var data_tableA = db.tableA.Where(t => t.bCANCEL == false).ToList();
的下一行
執行db.Entry(data_tableA).State
就知道了