public class EFSqlHelper {
/// <summary>
/// 通过EF执行sql语句获得Table
/// </summary>
/// <param name="db">数据库上下文</param>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static DataTable SqlQueryForDataTatable(DbContext db,
string sql,
SqlParameter[] parameters) {
SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Database.Connection.ConnectionString;
if (conn.State != ConnectionState.Open) {
conn.Open();
}
SqlCommand cmd = new SqlCommand();
//cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.CommandText = sql;
if (parameters.Length > 0) {
foreach (var item in parameters) {
cmd.Parameters.Add(item);
}
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
/// <summary>
/// 通过EF执行sql语句获得Table
/// </summary>
/// <param name="db">数据库上下文</param>
/// <param name="sql">sql语句</param>
/// <returns></returns>
public static DataTable SqlQueryForDataTatable(DbContext db,
string sql) {
SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Database.Connection.ConnectionString;
if (conn.State != ConnectionState.Open) {
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
/// <summary>
/// 执行sql增删改语句
/// </summary>
/// <param name="db"></param>
/// <param name="sql">要执行的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static bool ExecuteSqlCommand(DbContext db, string sql, SqlParameter[] parameters) {
return db.Database.ExecuteSqlCommand(sql, parameters) > 0;
}
/// <summary>
/// 执行sql增删改语句
/// </summary>
/// <param name="db">要执行的sql语句</param>
/// <param name="sql"></param>
/// <returns></returns>
public static bool ExecuteSqlCommand(DbContext db, string sql) {
return db.Database.ExecuteSqlCommand(sql) > 0;
}
/// <summary>
/// 通过EF执行sql语句获得Table
/// </summary>
/// <param name="db">数据库上下文</param>
/// <param name="sql">sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static DataTable SqlQueryForDataTatable(DbContext db,
string sql,
SqlParameter[] parameters) {
SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Database.Connection.ConnectionString;
if (conn.State != ConnectionState.Open) {
conn.Open();
}
SqlCommand cmd = new SqlCommand();
//cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.CommandText = sql;
if (parameters.Length > 0) {
foreach (var item in parameters) {
cmd.Parameters.Add(item);
}
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
/// <summary>
/// 通过EF执行sql语句获得Table
/// </summary>
/// <param name="db">数据库上下文</param>
/// <param name="sql">sql语句</param>
/// <returns></returns>
public static DataTable SqlQueryForDataTatable(DbContext db,
string sql) {
SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Database.Connection.ConnectionString;
if (conn.State != ConnectionState.Open) {
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
return table;
}
/// <summary>
/// 执行sql增删改语句
/// </summary>
/// <param name="db"></param>
/// <param name="sql">要执行的sql语句</param>
/// <param name="parameters">参数</param>
/// <returns></returns>
public static bool ExecuteSqlCommand(DbContext db, string sql, SqlParameter[] parameters) {
return db.Database.ExecuteSqlCommand(sql, parameters) > 0;
}
/// <summary>
/// 执行sql增删改语句
/// </summary>
/// <param name="db">要执行的sql语句</param>
/// <param name="sql"></param>
/// <returns></returns>
public static bool ExecuteSqlCommand(DbContext db, string sql) {
return db.Database.ExecuteSqlCommand(sql) > 0;
}
}
/// <summary>
/// 当前线程内的数据上下文
/// </summary>
public class DbContextFactory {
/// <summary>
/// 获取当前线程内的数据上下文,如果当前线程内没有上下文,那么创建一个上下文,
/// </summary>
/// <returns>当前线程内的数据上下文</returns>
public static DbContext GetCurrentDbContext() {
DbContext currentContext = CallContext.GetData("CurrentDbContext") as DbContext;
if (currentContext == null) {
currentContext = new AuthorDesignContext();
CallContext.SetData("CurrentDbContext", currentContext);
}
return currentContext;
}
}