Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Keputusan Pertanyaan SQL Tanpa Nama Menggunakan Rangka Kerja Entiti?

Bagaimana untuk Mendapatkan Keputusan Pertanyaan SQL Tanpa Nama Menggunakan Rangka Kerja Entiti?

Barbara Streisand
Barbara Streisandasal
2024-12-30 02:36:24632semak imbas

How to Retrieve Anonymous SQL Query Results Using Entity Framework?

Mengambil Keputusan Pertanyaan SQL Tanpa Nama dalam Rangka Kerja Entiti

Rangka Kerja Entiti menyediakan SqlQuery kaedah untuk melaksanakan SQL mentah dan memetakan hasilnya kepada entiti tertentu. Walau bagaimanapun, untuk mendapatkan semula hasil tanpa nama, pendekatan berbeza diperlukan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn