如何在EF中直接运行SQL命令

2025-05-21 02:13:32
推荐回答(2个)
回答(1):

db.Database.SqlQuery(sql).AsQueryable();//这个返回是queryable
返回DataTable要自己写个扩展方法

public static DataTable SqlQueryForDataTatable(this Database db,
string sql,
SqlParameter[] parameters)
{

SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = db.Connection.ConnectionString;
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
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;
}

回答(2):

TT模板是 获取数据:entity.Database.SqlQuery(""); 无数据返回:entity.Database.ExecuteSqlCommand("");
如果是ObjectContext 增删改:entity.ExecuteStoreCommand(""); 查询:entity.ExecuteStoreQuery("");