C# 如何使用实体框架生成查询字符串
我有一个复杂的查询,它可以根据接收到的参数而增长或变小。例如:C# 如何使用实体框架生成查询字符串,c#,entity-framework,C#,Entity Framework,我有一个复杂的查询,它可以根据接收到的参数而增长或变小。例如: public string CreateQuery(string[] fields) { var query = "SELECT student_name,student_last_name FROM students"; if(fields[0]!= "") { query += " WHERE studient_id='"+fields[0]+"'"; } if(fi
public string CreateQuery(string[] fields)
{
var query = "SELECT student_name,student_last_name FROM students";
if(fields[0]!= "")
{
query += " WHERE studient_id='"+fields[0]+"'";
}
if(fields[1] != null)
{
//them....
}
//and so on
return query;
}
所以我需要像webmatrix一样执行这个查询
ViewBag.StudentInf = db.Query("Query string here...");
那么,对于.NET Framework版本4及更高版本,如何使用entity Framework执行查询字符串??:使用 教程 或者试试这个功能
static void ExecuteSql(ObjectContext c, string sql)
{
var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection;
DbConnection conn = entityConnection.StoreConnection;
ConnectionState initialState = conn.State;
try
{
if (initialState != ConnectionState.Open)
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
finally
{
if (initialState != ConnectionState.Open)
conn.Close();
}
}
你真的不应该这样做。您的运行可能会有人对您执行SQL注入攻击 您可以执行类似于本文中推荐的操作 但如果你真的想这样做,你可以做以下几点:
using (System.Data.Common.DbCommand cmd = db.Database.Connection.CreateCommand())
{
cmd.CommandText = "SELECT *...";
}
如果您的问题是关于使用LINQtoEntities构建动态查询,那么您至少可以使用