代码之家  ›  专栏  ›  技术社区  ›  Luiscencio

使用实体框架“清除”所有表的更好方法

  •  0
  • Luiscencio  · 技术社区  · 15 年前

    嗨,现在我想清空我的桌子时,我使用暴力:

            inventario_dboEntities inv = new inventario_dboEntities();            
    
            foreach (var item in inv.espiromex_dampers)
            {
                inv.DeleteObject(item);
            }
            foreach (var item in inv.espiromex_detalles)
            {
                inv.DeleteObject(item);
            }
            foreach (var item in inv.espiromex_docs)
            {
                inv.DeleteObject(item);
            }
    

    我相信一定有更好更优雅的方式来做这件事…你们是怎么做这种工作的?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Back UP    15 年前

    我认为最好的方法和最佳实践是在您的查询浏览器中截断它们(因为您使用的是MySQL),或者如@thecloudlessky所说的使用存储过程。

    还有(但我不确定)你可以用反射和一些花哨的东西。

        2
  •  2
  •   Craig Stuntz    15 年前

    我们通过从备份中恢复“基线”数据库来实现这一点。

        3
  •  2
  •   zeeshanhirani    15 年前

    实体框架中的另一个选项是使用executeStoreCommand执行此操作 db.executeStoreCommand(@“删除表1;删除表2;删除表3;”);