Entity framework 首先从数据库中删除带有EF代码的行
我尝试使用以下函数删除项目:Entity framework 首先从数据库中删除带有EF代码的行,entity-framework,ef-code-first,delete-row,Entity Framework,Ef Code First,Delete Row,我尝试使用以下函数删除项目: internal static bool Remove(T record) { int result = 0; // get db set DatabaseDbContext context = new DatabaseDbContext(); DbSet<T> set = context.Set<T>();
internal static bool Remove(T record)
{
int result = 0;
// get db set
DatabaseDbContext context = new DatabaseDbContext();
DbSet<T> set = context.Set<T>();
// remove item
set.Remove(record);
// clean up
context.Dispose();
record.Dispose();
// return result
return result > 0;
}
内部静态bool删除(T记录)
{
int结果=0;
//获取数据库集
DatabaseDbContext context=新建DatabaseDbContext();
DbSet set=context.set();
//删除项目
设置、删除(记录);
//清理
context.Dispose();
record.Dispose();
//返回结果
返回结果>0;
}
我得到一个错误:“无法删除该对象,因为在ObjectStateManager中找不到它。”
我怎样才能修改它,使之像我想要的那样工作 解决了,但一定有更好的办法
internal static bool Remove(T record)
{
int result = 0;
// remove item
DatabaseDbContext context = new DatabaseDbContext();
T item = context.Set<T>().Where(r => r.Id == record.Id).FirstOrDefault();
context.Set<T>().Remove(item);
result = context.SaveChanges();
// clean up
context.Dispose();
record.Dispose();
// return result
return result > 0;
}
内部静态bool删除(T记录)
{
int结果=0;
//删除项目
DatabaseDbContext context=新建DatabaseDbContext();
T item=context.Set().Where(r=>r.Id==record.Id).FirstOrDefault();
context.Set().Remove(项);
结果=context.SaveChanges();
//清理
context.Dispose();
record.Dispose();
//返回结果
返回结果>0;
}
解决了这个问题,但必须有更好的方法吗
internal static bool Remove(T record)
{
int result = 0;
// remove item
DatabaseDbContext context = new DatabaseDbContext();
T item = context.Set<T>().Where(r => r.Id == record.Id).FirstOrDefault();
context.Set<T>().Remove(item);
result = context.SaveChanges();
// clean up
context.Dispose();
record.Dispose();
// return result
return result > 0;
}
内部静态bool删除(T记录)
{
int结果=0;
//删除项目
DatabaseDbContext context=新建DatabaseDbContext();
T item=context.Set().Where(r=>r.Id==record.Id).FirstOrDefault();
context.Set().Remove(项);
结果=context.SaveChanges();
//清理
context.Dispose();
record.Dispose();
//返回结果
返回结果>0;
}
您可以使用“附加”将现有记录附加到当前上下文。这样可以避免为了删除记录而从数据库检索记录
context.Set<T>().Attach(item);
context.Set().Attach(项目);
您可以使用“附加”将现有记录附加到当前上下文。这样可以避免为了删除记录而从数据库检索记录
context.Set<T>().Attach(item);
context.Set().Attach(项目);
您可以使用
调用ObjectContext上的Attach将对象附加到对象上下文。当对象已存在于数据源中,但当前未附加到上下文时,请执行此操作
你可以用
调用ObjectContext上的Attach将对象附加到对象上下文。当对象已存在于数据源中,但当前未附加到上下文时,请执行此操作
试试这个
context.Entry(record).State = EntityState.Deleted;
context.SaveChanges();
试试这个
context.Entry(record).State = EntityState.Deleted;
context.SaveChanges();
使用InsertedDate删除实体范围的另一种方法
public bool Delete_Programs_By_Date(DateTime programDate)
{
try
{
using (var db = new Context())
{
db.Program.RemoveRange(db.Program.Where(x => x.InsertedDate == programDate).ToList());
db.SaveChanges();
}
return true;
}
catch
{
return false;
}
}
使用InsertedDate删除实体范围的另一种方法
public bool Delete_Programs_By_Date(DateTime programDate)
{
try
{
using (var db = new Context())
{
db.Program.RemoveRange(db.Program.Where(x => x.InsertedDate == programDate).ToList());
db.SaveChanges();
}
return true;
}
catch
{
return false;
}
}