public static string GetSqlWithParameters <T>(System.Data.Entity.Core.Objects.ObjectQuery <T> query) { System.Text.StringBuilder sb = new StringBuilder(); string traceString = query.ToTraceString() + Environment.NewLine; foreach (var parameter in query.Parameters) { traceString += parameter.Name + " [" + parameter.ParameterType.FullName + "] = " + parameter.Value + "\n"; } return(traceString); }
public int Update(Expression <Func <TEntity, bool> > where, Expression <Func <TEntity> > updater) { // where var objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)CurrentDbContext).ObjectContext; var set = objectContext.CreateObjectSet <TEntity>(); var query = set.Where(where); //System.Data.Objects.ObjectQuery<TEntity> objQuery = query as System.Data.Objects.ObjectQuery<TEntity>; System.Data.Entity.Core.Objects.ObjectQuery <TEntity> objQuery = query as System.Data.Entity.Core.Objects.ObjectQuery <TEntity>; List <object> objParams = new List <object>(); string sql = objQuery.ToTraceString(); sql = sql.Substring(sql.IndexOf("from", StringComparison.OrdinalIgnoreCase)).Replace("__linq__", ""); int paramindex = objQuery.Parameters.Count; foreach (var para in objQuery.Parameters) { objParams.Add(para.Value); } // update set var valueObj = updater.Compile().Invoke(); MemberInitExpression updateMemberExpr = (MemberInitExpression)updater.Body; StringBuilder updateBuilder = new StringBuilder(); Type valueType = typeof(TEntity); foreach (var bind in updateMemberExpr.Bindings.Cast <MemberAssignment>()) { string name = bind.Member.Name; updateBuilder.AppendFormat("{0}=@p{1},", name, paramindex++); var value = valueType.GetProperty(name).GetValue(valueObj, null); objParams.Add(value); } if (updateBuilder.Length == 0) { throw new Exception("Please update at list one property."); } else { sql = " update [Extent1] set " + updateBuilder.Remove(updateBuilder.Length - 1, 1).ToString() + " " + sql; } int index = this.CurrentDbContext.Database.ExecuteSqlCommand(sql, objParams.ToArray()); _DbContext = new TDbContext(); return(index); }
public QueryInformation GetQueryInformation<T>(System.Data.Entity.Core.Objects.ObjectQuery<T> query) { var fromRegex = new Regex(@"FROM \[([^\]]+)\]\.\[([^\]]+)\] AS (\[[^\]]+\])", RegexOptions.IgnoreCase); var queryInfo = new QueryInformation(); var str = query.ToTraceString(); var match = fromRegex.Match(str); queryInfo.Schema = match.Groups[1].Value; queryInfo.Table = match.Groups[2].Value; queryInfo.Alias = match.Groups[3].Value; var i = str.IndexOf("WHERE"); if (i > 0) { var whereClause = str.Substring(i); queryInfo.WhereSql = whereClause.Replace(queryInfo.Alias + ".", ""); } return queryInfo; }
public QueryInformation GetQueryInformation <T>(System.Data.Entity.Core.Objects.ObjectQuery <T> query) { var queryInfo = new QueryInformation(); var str = query.ToTraceString(); var match = FromRegex.Match(str); queryInfo.Schema = match.Groups[1].Value; queryInfo.Table = match.Groups[2].Value; queryInfo.Alias = match.Groups[3].Value; var i = str.IndexOf("WHERE", StringComparison.Ordinal); if (i > 0) { var whereClause = str.Substring(i); queryInfo.WhereSql = whereClause.Replace(queryInfo.Alias + ".", ""); } return(queryInfo); }
//public int Delete(System.Linq.Expressions.Expression<Func<TEntity, bool>> Where) //{ // IList<TEntity> entityList = this._db.Set<TEntity>().Where(Where).ToList(); // return this.Delete(entityList); //} public int Delete(Expression <Func <TEntity, bool> > where) { var objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)CurrentDbContext).ObjectContext; var set = objectContext.CreateObjectSet <TEntity>(); var query = set.Where(where); //System.Data.Objects.ObjectQuery<TEntity> objQuery = query as System.Data.Objects.ObjectQuery<TEntity>; System.Data.Entity.Core.Objects.ObjectQuery <TEntity> objQuery = query as System.Data.Entity.Core.Objects.ObjectQuery <TEntity>; string sql = objQuery.ToTraceString(); sql = "delete " + sql.Substring(sql.IndexOf("from", StringComparison.OrdinalIgnoreCase)); sql = sql.Replace("[Extent1].", "").Replace("AS [Extent1]", "").Replace("__linq__", ""); List <object> objs = new List <object>(); foreach (var para in objQuery.Parameters) { objs.Add(para.Value); } int index = this.CurrentDbContext.Database.ExecuteSqlCommand(sql, objs.ToArray()); _DbContext = new TDbContext(); return(index); }
protected void InitializeQuery(System.Data.Entity.Core.Objects.ObjectQuery <TElement> objectQuery) { this._objectQuery = objectQuery; }
public virtual void ResetQuery() { this._objectQuery = (System.Data.Entity.Core.Objects.ObjectQuery <TElement>)null; }
public InternalQuery(InternalContext internalContext, System.Data.Entity.Core.Objects.ObjectQuery objectQuery) { this._internalContext = internalContext; this._objectQuery = (System.Data.Entity.Core.Objects.ObjectQuery <TElement>)objectQuery; }