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;
}