Rumah >pangkalan data >tutorial mysql >Bagaimana Mengekstrak Hasil Jenis Tanpa Nama daripada Pertanyaan SQL Menggunakan Rangka Kerja Entiti?

Bagaimana Mengekstrak Hasil Jenis Tanpa Nama daripada Pertanyaan SQL Menggunakan Rangka Kerja Entiti?

Susan Sarandon
Susan Sarandonasal
2024-12-31 17:26:14281semak imbas

How to Extract Anonymous Type Results from SQL Queries Using Entity Framework?

Pengeluaran Hasil Jenis Tanpa Nama daripada Pertanyaan SQL dalam Rangka Kerja Entiti

Dalam Rangka Kerja Entiti, SqlQuery kaedah digunakan untuk melaksanakan pertanyaan SQL mentah dan mengembalikan hasil sebagai objek jenis yang ditentukan, T. Walau bagaimanapun, apabila cuba untuk mengambil hanya lajur tertentu daripada jadual menggunakan kaedah ini, pembangun mungkin menghadapi pengecualian disebabkan ketidakserasian pembaca data dengan yang dijangkakan. jenis objek.

Untuk mengatasi had ini dan mendapatkan hasil jenis tanpa nama, penyelesaiannya terletak pada memanfaatkan SQL mentah secara langsung. Kaedah yang disediakan, DynamicListFromSql, membolehkan pembangun mencapai fungsi ini.

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;
            }
        }
    }
}

Kaedah ini membolehkan pembangun melaksanakan pertanyaan SQL dan mendapatkan semula hasil dalam bentuk objek dinamik, yang disimpan sebagai pasangan nilai kunci dalam Contoh ExpandoObject.

Untuk menggunakan kaedah ini dalam kod anda sendiri, hanya panggil ia sebagai berikut:

List<dynamic> results = DynamicListFromSql(myDb,"select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();

Dengan menggunakan pendekatan ini, pembangun boleh mendapatkan hasil jenis tanpa nama daripada pertanyaan SQL dengan mudah, memudahkan pengambilan semula lajur tertentu atau penciptaan struktur data tersuai berdasarkan hasil pertanyaan.

Atas ialah kandungan terperinci Bagaimana Mengekstrak Hasil Jenis Tanpa Nama daripada Pertanyaan SQL 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