您的位置:首页 > 其它

Entity Framework 4中删除所有数据行的几种方法【转载】

2011-09-16 14:10 323 查看

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, string sql)

{

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

{

if (conn.State != ConnectionState.Open)

conn.Close();

}

}

}

使用方法如下:

using (var db = new msdbEntities())

{

db.DeleteAllSql("DELETE Students");

}

总结下来,目前没有提供删除所有数据对象的方法,所以一般需要自己添加方法或者添加扩展方法来实现.

BTW:今天终于加工资了,虽然.涨幅远远超过CPI,但是丝毫没有什么喜悦,主要是已经对公司工作内容失去了兴趣.所以,工资虽然熬到了一个新阶段,但是还是很淡定.

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: