1.EF定義了一下幾種State(狀態)【注意這是枚舉類型】
如圖所示:
Detached:對象存在,但沒有被跟蹤。 在創建實體之後、但將其添加到對象上下文之前,該實體處於此狀態。
Unchanged:對象存在,經過SaveChanges()方法以後依舊沒有發生改變。
Added:對象本身不存在,此時添加當前對象。
Deleted:通過SaveChanges()方法以後狀態變爲Detached表示對象已經刪除。
Modified:對象中某個屬性發生改變,此時狀態爲EntityState.Modified保存以後狀態變爲Unchanged。
public virtual bool Insert(T Entity)
{
using (Xjn_InformationEntities Info = new Xjn_InformationEntities())
{
var obj = Info.Set<T>();
//進行添加對象操作前對象狀態應爲Detached
obj.Add(Entity);
//此時EntityState應爲 Added
return Info.SaveChanges() > 0;
}
}
public virtual bool Update(T Entity)
{
using (Xjn_InformationEntities Info = new Xjn_InformationEntities())
{
var obj = Info.Set<T>();
obj.Attach(Entity);
Info.Entry(Entity).State = EntityState.Modified;
//將狀態改爲Modified,保存成功後狀態Unchanged
return Info.SaveChanges() > 0;
}
}
public virtual bool Delete(T Entity)
{
using (Xjn_InformationEntities Info = new Xjn_InformationEntities())
{
var obj = Info.Set<T>();
if (Entity != null)
{
obj.Attach(Entity);
Info.Set<T>().Remove(Entity);
//在Remove方法之後狀態變爲Deleted
return Info.SaveChanges() > 0;
}
else
return false;
}