天天看點

Entity Framework 4中删除所有資料行的幾種方法

有朋友問如何删除所有資料行的方法.的确,EF目前沒有提供删除所有資料行的方法.是以下面給大家介紹幾種方法.

方法1:

使用ExecuteStoreCommand方法,代碼如下.

using (var db = new msdbEntities())

{

     db.ExecuteStoreCommand("DELETE " + db.students.EntitySet.ElementType.Name);

}

因為xx. EntitySet.ElementType.Name就是對應的資料表名稱,是以可以使用delete 拼接資料表名來删除資料.

方法2:

在資料實體中添加一個删除所有對象的方法.如下:

    public partial class msdbEntities : ObjectContext

    {

       //其他代碼

       //…..

        public void DeleteObjects(IEnumerable entities)

        {

            foreach (var entity in entities)

            {

                this.DeleteObject(entity);

            }

        }

    }

使用代碼如下:

 using (var db = new msdbEntities())

 {

      db.DeleteObjects(db.students.Where(c => c.Id == c.Id));

      db.SaveChanges();

 }

方法3:

給資料實體添加一個擴充方法,執行一個删除的SQL指令.如下:

public static class Extens

        public static void DeleteAllSql(this ObjectContext ctx, stringsql)

            var entityConnection = (System.Data.EntityClient.EntityConnection)ctx.Connection;

            DbConnection conn = entityConnection.StoreConnection;

            try

            {

                if (conn.State != ConnectionState.Open)

                    conn.Open();

                using (DbCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = sql;

                    cmd.ExecuteNonQuery();

                }

            finally

                    conn.Close();

使用方法如下:

   using (var db = new msdbEntities())

       db.DeleteAllSql("DELETE Students");

   }

總結下來,目前沒有提供删除所有資料對象的方法,是以一般需要自己添加方法或者添加擴充方法來實作.

BTW:今天終于加工資了,雖然.漲幅遠遠超過CPI,但是絲毫沒有什麼喜悅,主要是已經對公司工作内容失去了興趣.是以,工資雖然熬到了一個新階段,但是還是很淡定.

    本文轉自風車車  部落格園部落格,原文連結:http://www.cnblogs.com/xray2005/archive/2011/08/17/2143803.html,如需轉載請自行聯系原作者