Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keputusan Pertanyaan SQL Tanpa Nama Menggunakan Rangka Kerja Entiti?
Mengambil Keputusan Pertanyaan SQL Tanpa Nama dalam Rangka Kerja Entiti
Rangka Kerja Entiti menyediakan SqlQuery
Satu penyelesaian ialah menggunakan kaedah SqlConnection dan ExecuteReader mentah untuk mendapatkan semula data dan mencipta objek tanpa nama secara manual berdasarkan set hasil. Berikut ialah kaedah sambungan tersuai yang boleh digunakan:
public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params) { using (var cmd = db.Database.Connection.CreateCommand()) { cmd.CommandText = Sql; if (cmd.Connection.State != ConnectionState.Open) { cmd.Connection.Open(); } foreach (KeyValuePair<string, object> p in Params) { DbParameter dbParameter = cmd.CreateParameter(); dbParameter.ParameterName = p.Key; dbParameter.Value = p.Value; cmd.Parameters.Add(dbParameter); } using (var dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { var row = new ExpandoObject() as IDictionary<string, object>; for (var fieldCount = 0; fieldCount < dataReader.FieldCount; fieldCount++) { row.Add(dataReader.GetName(fieldCount), dataReader[fieldCount]); } yield return row; } } } }
Dengan kaedah ini, anda boleh mendapatkan hasil tanpa nama daripada pertanyaan SQL seperti berikut:
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Keputusan Pertanyaan SQL Tanpa Nama Menggunakan Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!