实体框架删除记录

时间:2013-01-29 13:39:13

标签: asp.net-mvc linq entity-framework

我正在尝试删除表store中的记录,但我在代码中识别DeleteObject时遇到问题。我有参考资料

using System.Linq;
using System.Data.Entity;
using System.Data.Objects;

但它仍无效。我使用MVC 4使用Visual Studio 2012

public void Delete()
{
    using (var db = new AppContext())
    {
        var query_D = (from b in db.Stores
                   where b.storeID == 1
                   select b).First();

        db.DeleteObject(query_D);
        db.SaveChanges();
    } 
}

提前致谢

3 个答案:

答案 0 :(得分:9)

我意识到您在VS2012中使用MVC 4,默认情况下,Entity Framework版本为5.

现在delete的方式来自EF4

以下是delete使用EF5

的正确方法
using (var db= new AppContext(ConnectionStr))
{
    try
    {
        con.Configuration.AutoDetectChangesEnabled = false;
        var o = new Store { Id = 1 };
        db.Stores.Attach(o);
        db.Stores.Remove(o);
        db.SaveChanges();
    }
    catch (Exception ex)
    {
        throw new Exception(ex.InnerException.Message);
    }
    finally
    {
        con.Configuration.AutoDetectChangesEnabled = true;
    }
}

答案 1 :(得分:8)

只需使用

db.Entry(query_D).State = System.Data.EntityState.Deleted;

答案 2 :(得分:0)

你应该尝试:

{{1}}