使用干货!Entity Framework中删除所有数据行的几种方法C#开发工程师
有些C#的初学者朋友问我如何删除所有数据行的方法.然而EF目前没有提供删除所有数据行的方法.所以我根据自身的经验,下面给大家介绍几种方法希望能够帮助到大家.
方法1:
为数据实体添加一个扩展方法,执行一个删除的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");
}
方法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:
使用ExecuteStoreCommand方法,代码如下.
using (var db = new msdbEntities())
{
db.ExecuteStoreCommand("DELETE " + db.students.EntitySet.ElementType.Name);
}
因为xx. EntitySet.ElementType.Name就是对应的数据表名称,所以可以使用delete 拼接数据表名来删除数据.
总结下来,目前没有EF提供删除所有数据对象的方法,所以一般需要自己添加方法或者添加扩展方法来实现.,多多总结也许你也会有更好的方法。看完这些是不是感觉受益匪浅,学习不只是学习,温故知新,学会总结,会使学习事倍功半,汇鱼人才每天发布有用的学习资源,想要了解更多,就关注汇鱼人才吧


1914篇文章