public IEnumerable <T> SqlQuery <T>(string sql, params object[] parameters) { foreach (var item in _database.SqlQuery <T>(sql, parameters)) { yield return(item); } }
/// <summary> /// Wrapper function of Database.SqlQuery<T>. /// T can be any view, not necessary predefined model class /// </summary> /// <typeparam name="T"></typeparam> /// <param name="self"></param> /// <param name="sp"></param> /// <returns></returns> public static IEnumerable <T> SqlQuery <T>(this System.Data.Entity.Database self, IStoredProcedureBase sp) { if (self == null) { throw new ArgumentNullException("self"); } if (sp == null) { throw new ArgumentException("IStoredProcedure sp"); } var arguments = PrepareArguments(sp); try { return(self.SqlQuery <T>(arguments.Item1, arguments.Item2)); } catch (Exception ex) { throw ex; } return(null); }
private static IEnumerable SqlQueryForDynamicOtherDB(this System.Data.Entity.Database db, string sql, IDbConnection conn, params object[] parameters) { conn.ConnectionString = db.Connection.ConnectionString; if (conn.State != ConnectionState.Open) { conn.Open(); } IDbCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; if (parameters != null) { foreach (var item in parameters) { cmd.Parameters.Add(item); } } using (IDataReader dataReader = cmd.ExecuteReader()) { if (!dataReader.Read()) { return(null); //无结果返回Null } #region 构建动态字段 TypeBuilder builder = DatabaseExtensions.CreateTypeBuilder( "EF_DynamicModelAssembly", "DynamicModule", "DynamicType"); int fieldCount = dataReader.FieldCount; for (int i = 0; i < fieldCount; i++) { Type t = dataReader.GetFieldType(i); switch (t.Name.ToLower()) { case "decimal": t = typeof(Decimal?); break; case "double": t = typeof(Double?); break; case "datetime": t = typeof(DateTime?); break; case "single": t = typeof(float?); break; case "int16": t = typeof(int?); break; case "int32": t = typeof(int?); break; case "int64": t = typeof(int?); break; default: break; } DatabaseExtensions.CreateAutoImplementedProperty( builder, dataReader.GetName(i), t); } #endregion cmd.Parameters.Clear(); dataReader.Close(); dataReader.Dispose(); cmd.Dispose(); conn.Close(); conn.Dispose(); Type returnType = builder.CreateType(); if (parameters != null) { return(db.SqlQuery(returnType, sql, parameters)); } else { return(db.SqlQuery(returnType, sql)); } } }
public int Count(string stmt) { var qry = m_database.SqlQuery <Int32>(stmt); return(qry.FirstOrDefault()); }