Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Linq ke Entitas dan masalah LEFT OUTER JOIN dengan relasi BANYAK:1

Saya telah bekerja sedikit pada penyedia kerangka kerja entitas dan telah melihatnya. Saya percaya bahwa penyedia itu sendiri tidak punya pilihan dalam situasi ini. Pohon perintah dibuat oleh kerangka kerja entitas dan memberikannya kepada penyedia untuk membangun SQL. Ini adalah tebakan lengkap di sini, tetapi mungkin alasan menghasilkan gabungan LEFT OUTER dalam situasi itu adalah karena kerangka kerja entitas tidak benar-benar tahu bahwa batasan referensial ada dalam database. Misalnya, saya bisa masuk dan mengotori model entitas setelah dibuat dari database dan menambah/mengubah batasan yang tidak mencerminkan apa yang dilakukan database. Mungkin karena alasan ini, para desainer memilih untuk bermain aman dan menghasilkan LEFT OUTER join "berjaga-jaga".

Meskipun demikian, saya yakin Anda bisa mendapatkan inner join. Misalnya, hal berikut menyebabkan penyedia membuat gabungan LEFT OUTER:

var res2 = from a in ent.answers
           select new
           { a.Answer1, a.user.UserName };

Namun, hasil berikut dalam INNER bergabung:

res2 = from a in ent.answers
       join u in ent.users
       on a.UserID equals u.PK
       select new { a.Answer1, u.UserName };

Juga, entitas SQL berikut menghasilkan gabungan dalam:

ObjectQuery<DbDataRecord> dr = ent.CreateQuery<DbDataRecord>( 
         "SELECT a.answer1, u.username " +
         "FROM answers as a inner join users as u on a.userid = u.pk" );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian Teks Lengkap dengan InnoDB

  2. Database kolom Laravel Sum Fasih

  3. Bagaimana saya bisa menggunakan MySQL dengan Python 3.3 dan Django 1.5?

  4. Bagaimana cara memilih hitungan dengan pembuat kueri Laravel yang lancar?

  5. Tanggal Penerbitan Kueri Mysql dikurangi 7 hari