entity framework 删除多条数据?

根据某个id删除数据

应为根据这个id会搜出多条数据比如下面的 linq to entity语句得到多个结果

var query=(from comment in db.comments where comment.blog_id == id select comment);

删除的时候怎么样才可以一口气 一次性的删除掉所有数据而不是通过循环一条条删呢?

还有如果

1 foreachvar i in query)  //这样是不是会因为延迟查询的原因 而出现性能问题
2 
3 {
4 // 删除语句
5 }  

public int DeleteAllcomment(int blog_id
        { 
            return entities.ExecuteStoreCommand("delete from comment where blog_id= @blog_id", new SqlParameter("@blog_id",blog_id)); 
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Restful.Data是一套通用的轻量级数据持久层组件,除封装了ADO.NET基本的数据库操作以外,也提供了一些orm相关的API,用户可以方便的定义实体类,并使用这些API对数据进行增删改查等操作。 Restful.Data借鉴了业界如nhibernate、entity framework等知名的数据持久层组件,但从一开始设计的初衷就是为了让用户能快速的学习和使用,并写出更加简洁优雅的代码,所以摒弃了一些复杂的设计和功能,用户可以使用变通的方式或方法使用Restful.Data组件实现其目的。 Restful.Data充分考虑了实体框架的执行效率问题,进行了反复的推敲和论证,尽可能的采用高效的设计方案来提高性能。谁需要Restful.Data?  敢于冒险、追求完美、勇于挑战并极具责任感的程序设计人员。Restful.Data提供哪些功能?基本的ADO.NET操作:    BeginTransaction    ExecuteScalar    ExecuteDataReader    ExecuteDataTable    ExecuteDataSet    ExecutePageQuery    ExecuteStoredProcedureORM相关操作:    Insert    Updete    Delete    Find如何使用Restful.Data?  使用前的准备:  下载Restful.dll、Restful.Data、Restful.Data.MySql、Remotion.Linq.dll、MySql.Data.dll,或者直接下载源代码进行编译并获取这5个dll,并在项目中引用这些dll。在 Web.config 或 App.config 中配置连接字符串,如下:注册提供程序工厂:  SessionFactories.Register();  提供程序工厂在一个Application中仅需注册一次。如何进行基本的数据库操作:using( ISession session = SessionFactory.CreateDefaultSession() ){     string sql = "select * from Person";     DataTable dt = session.ExecuteDataTable( sql ); }CreateDefaultSession默认情况下根据配置文件中连接字符串节点的第一项创建数据库连接,你可以调用CreateSession进行指定,或者你也可以使用 SessionFactory.Default = "MySql2"指定默认连接。未防止 SQL 注入,你也使用呆参数方法:using( ISession session = SessionFactory.CreateDefaultSession() )   {     string sql = "select * from Person where Id = @Id;"; IDictionary<string, object> parameters = new Dictionary<string, object>(); parameters.Add( "@Id", 5 ); DataTable dt = session.ExecuteDataTable( sql, parameters ); }与此类似的还有ExecuteScalar、ExecuteDataReader、ExecuteDataTable、ExecuteDataSet等方法。如何进行分页查询:using( ISession session = SessionFactory.CreateDefaultSession() )   {       string sql = "select * from User where CreateTime < @CreateTime";   IDictionary<string, object> parameters = new Dictionary<string, object>();   parameters.Add( "@CreateTime", DateTime.Now );   // 查询第2页,每页10条,并根据 CreateTime 字段降序排列   PageQueryResult result = session.ExecutePageQuery( sql01, 2, 10, "CreateTime DESC", parameters ); }如何进行数据新增:using( ISession session = SessionFactory.CreateDefaultSession() )   {     var person = new Person(); // person.Id = 1; 若Id字段为自增类型,无需指定。 person.Name = "test01"; person.CreateTime = DateTime.Now; person.IsActive = true; int i = session.Insert( person ); }如何进行数据更新:using( ISession session = SessionFactory.CreateDefaultSession() )   {     var person = new Person(); person.Id = 1;  person.Name = "test01"; person.CreateTime = DateTime.Now; person.IsActive = true; // 在调用此方法时,务必指定实例的主键值。 int i = session.Update( person ); }或者你也可以批量更新:using( ISession session = SessionFactory.CreateDefaultSession() )   {     var person = new Person(); // person.Id = 1;  person.Name = "test01"; person.CreateTime = DateTime.Now; person.IsActive = true; // 在调用此方法时,不需要指定主键值,且不会更新主键字段 session.Update<Person>().Set( person ).Where( s => s.IsActive == false ).Execute(); }如何进行数据删除:using( ISession session = SessionFactory.CreateDefaultSession() )   {     var person = new Person() { Id = 1 }; // 在调用此方法时,需要指定主键值 session.Delete( person ); }或者你也可以批量删除:using( ISession session = SessionFactory.CreateDefaultSession() )   {     // 在调用此方法时,不需要指定主键值     session.Delete().Where( s => s.IsActive == false ).Execute();   }如何进行单表查询:using( ISession session = SessionFactory.CreateDefaultSession() )   {     var queryable = session.Find()         .Where( s => s.Name.Contains("a") )         .Where( s => s.CreateTime < DateTime.Now )         .OrderBy( s => s.CreateTime )         .Skip(5)         .Take(10); var list = queryable.ToList(); var count = queryable.Count(); var first = queryable.FirstOrDefault(); var queryable1 = from s in session.Find<Person>()             where s => s.Name.Contains("a")             orderby s.CreateTime descending             select new { Id = s.Id, Name = s.Name }; // ... }目前只支持对单表的LINQ查询,且为了降低复杂度,后期也并不打算支持多表查询,对函数的支持也有限,仅支持string类型的 StartsWith、EndsWith、Contains、Equals、IsNullOrEmpty等方法,对于其他方法后期将会继续完善。如果你需要实现一个复杂的查询并将其转换成对象,你也可以这样:using( ISession session = SessionFactory.CreateDefaultSession() )   {     string sql = "..."; T @object = session.Find<T>( sql ); }如何支持事务处理:using( ISession session = SessionFactory.CreateDefaultSession() )   {     using( DbTransaction transaction = session.BeginTransaction() )     {         // ...         // ...     transaction.Commit(); } }SessionHelper的使用:SessionHelper对session对象的方法进行了静态封装,如果你只是需要执行单条语句,并马上关闭连接,你可以使用 SessionHelper 类中提供的一些辅助方法。5、如何定义实体类[Serializable] public class Person : EntityObject  // 需继承与 EntityObject 类 {     private int m_Id;     private string m_Name;     private int? m_Age;     private decimal? m_Money;     private DateTime m_CreateTime;     private bool m_IsActive;     [PrimaryKey, AutoIncrease]  // 如果是自增字段,标记为 AutoIncrease;如果是主键标记为 PrimaryKey     public int Id     {         get { return this.m_Id; }         set { this.m_Id = value; this.OnPropertyChanged( "Id", value ); }     }     public string Name     {         get { return this.m_Name; }         set { this.m_Name = value; this.OnPropertyChanged( "Name", value ); }     }     public int? Age     {         get { return this.m_Age; }         set { this.m_Age = value; this.OnPropertyChanged( "Age", value ); }     }     public decimal? Money     {         get { return this.m_Money; }         set { this.m_Money = value; this.OnPropertyChanged( "Money", value ); }     }     public DateTime CreateTime     {         get { return this.m_CreateTime; }         set { this.m_CreateTime = value; this.OnPropertyChanged( "CreateTime", value ); }     }     public bool IsActive     {         get { return this.m_IsActive; }         set { this.m_IsActive = value; this.OnPropertyChanged( "IsActive", value ); }     } }6、总结因作者时间关系,组件目前并非十分完善,测试工作也只简单的进行了一部分,但您可以完全放心的应用于商业项目中,如遇到问题,作者将尽可能的解决。 标签:Restful

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值