【问题标题】:Entity Framework 4 Multiple Object Delete(RemoveAll)Entity Framework 4 多对象删除(RemoveAll)
【发布时间】:2009-11-23 04:59:26
【问题描述】:

我读到新的实体框架将包含一个删除多个项目的方法(Linq to SQL 有 DeleteAllOnSubmit()),但我找不到执行此操作的函数/方法。

这是在 Beta 2 中还是我必须自己制作?

更新:

这是我现在使用的:

    public void DeleteObjects(IEnumerable<object> objects)
    {
        foreach (object o in objects)
        {
            DeleteObject(o);
        }
        SaveChanges();
    }

【问题讨论】:

标签: .net-4.0 entity-framework-4


【解决方案1】:

EF 4 允许您针对对象上下文执行 TSQL 语句:

   using (var context = new EntityFrameworkExampleEntities())
    {       
     var count = 
         context.ExecuteStoreCommand(@"DELETE FROM Companies WHERE [CompanyID]=4");            
    }

有关详细信息,请参阅以下博客。

http://blogs.microsoft.co.il/blogs/gilf/archive/2009/11/25/execute-t-sql-statements-in-entity-framework-4.aspx

【讨论】:

  • 我的功能有缺点吗?
  • 缺点是在删除过程中所有对象都保存在内存中。如果您想删除大量尚未从数据库中加载的对象,它们将在被删除之前全部加载到应用程序中。
  • 伊克。引用您链接到的文章,“此功能仅应在实体框架不支持您需要的东西的情况下使用。” EF 确实支持删除多个对象,调用 DeleteObject() 然后 SaveChanges() (或者这样做stackoverflow.com/a/870081/24267)。
【解决方案2】:

我知道这已经晚了,但我找到了这篇文章并找到了一个更简单的解决方案,但没有发布。 您可以在 Association 属性中将 OnDelete 设置为 Cascade。在 VS2012 中打开 edmx 文件。单击关联,您将在“属性”选项卡中找到 OnDelete。然后,您可以使用 Remove() 方法,无需触发器或任何其他特殊处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多