Şimdi Ara

EF context.SqlQuery nasıl kullanılıyor?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
152
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Code first öğreniyorum ama sql kodlarını ef ile beraber kullanmada sıkıntı çekiyorum.
    docs.microsoft.com
    Raw SQL Queries - EF6
    https://docs.microsoft.com/en-us/ef/ef6/querying/raw-sql


    Şu linkteki gibi yapmaya çalıştım ama olmadı :) SQL kodu veritabanında çalışıyor.

    EF context.SqlQuery nasıl kullanılıyor?
    EF context.SqlQuery nasıl kullanılıyor?

    URUNLER poco classı
    public partial class URUNLER
    {
    public int ID { get; set; }
    public string URUNADI { get; set; }
    public string MARKA { get; set; }
    public string MODEL { get; set; }
    public string YIL { get; set; }
    public Nullable<int> ADET { get; set; }
    public Nullable<decimal> ALISFIYAT { get; set; }
    public Nullable<decimal> SATISFIYAT { get; set; }
    public string DETAY { get; set; }
    }



    < Bu mesaj bu kişi tarafından değiştirildi ORGANIKHOSAF -- 2 Mart 2019; 0:1:19 >







  • tahminde bulunuyorum. public int ID { get; set; } nullable olsa belki sorgun çalışır ama mantalite olarak saten EF ile plain sql kullanmamalısın. plain sorgu yazacaksan dapper veya peta tarzı mini orm kullanabilirsin. Zaten uyarı da ID içermiyor diyor. Birde yazdığın sorgu Ef ile rahatlıkla yazılabilecek bir sorgu.

    from u in URUNLER
    group by b.URUNLER into g
    where g.sum(s=> s.ADET) > 20


    ya da context.Database.SqlQuery<string>(
    "SELECT Name FROM dbo.Blogs").ToList();
    Buradaki gibi STring yerine kendin sonradna bu isteğe uygun baska bir poco yapıp deneyebilirsin. ama SqlQuery girmemen lazım. Ef bunu sık kullanın diye koymuyor aslında.


    Iki orm aynı proje de kullanmak da bana mantıklı gelmiyor. Ya birini ya diğerini kullanman mantıklı.
  • mahoni_38 kullanıcısına yanıt
    Teşekkürler abi deneyeceğim
  • mahoni_38 kullanıcısına yanıt
    Abi yaptım sağol 3 türlü yapmasınıda öğrendim ama şunu beceremedim bu attıgım ilk 2 kodda tüm verileri gruplayıp getiriyor ama ben adeti 20 den az olanları getirmesi için <20 yi nereye koymam lazım beceremedim x.adetden sonra <20 diyince hata veriyor. 3.Attıgın kodda ama doğru şekilde getiriyor tekrardan ilgin için çok sağol 3. koddaki gibi yapmak bana çok kolaylık sağlayacak ama neden bunu önermediğini öğrenebilir miyim?

    3 Türlüde çalışıyor.
    AzalanStoklar.DataSource = ctx.URUNLERs.GroupBy(urunadi => urunadi.URUNADI).Select(g => new { UrunAdi = g.Key, Adet = g.Sum(x => x.ADET) }).ToList();


    var deneme = from u in ctx.URUNLERs
    group u by u.URUNADI into g
    select new { UrunAdi = g.Key, Adet = g.Sum(x => x.ADET) };
    AzalanStoklar.DataSource = deneme.ToList();




    var azalans = ctx.Database.SqlQuery<STOKAZALAN>("select URUNADI,Sum(ADET) as 'ADET' from dbo.URUNLER group by URUNADI having Sum(ADET)<=20 order by Sum(ADET)").ToList();
    AzalanStoklar.DataSource = azalans;


    class STOKAZALAN
    {
    public string URUNADI { get; set; }
    public Nullable<int> ADET { get; set; }
    }



    < Bu mesaj bu kişi tarafından değiştirildi ORGANIKHOSAF -- 2 Mart 2019; 16:1:57 >




  • quote:

    Orijinalden alıntı: ORGANIKHOSAF

    Abi yaptım sağol 3 türlü yapmasınıda öğrendim ama şunu beceremedim bu attıgım ilk 2 kodda tüm verileri gruplayıp getiriyor ama ben adeti 20 den az olanları getirmesi için <20 yi nereye koymam lazım beceremedim x.adetden sonra <20 diyince hata veriyor. 3.Attıgın kodda ama doğru şekilde getiriyor tekrardan ilgin için çok sağol 3. koddaki gibi yapmak bana çok kolaylık sağlayacak ama neden bunu önermediğini öğrenebilir miyim?

    3 Türlüde çalışıyor.
    AzalanStoklar.DataSource = ctx.URUNLERs.GroupBy(urunadi => urunadi.URUNADI).Select(g => new { UrunAdi = g.Key, Adet = g.Sum(x => x.ADET) }).ToList();


    var deneme = from u in ctx.URUNLERs
    group u by u.URUNADI into g
    select new { UrunAdi = g.Key, Adet = g.Sum(x => x.ADET) };
    AzalanStoklar.DataSource = deneme.ToList();




    var azalans = ctx.Database.SqlQuery<STOKAZALAN>("select URUNADI,Sum(ADET) as 'ADET' from dbo.URUNLER group by URUNADI having Sum(ADET)<=20 order by Sum(ADET)").ToList();
    AzalanStoklar.DataSource = azalans;


    class STOKAZALAN
    {
    public string URUNADI { get; set; }
    public Nullable<int> ADET { get; set; }
    }
    ef kullanırken ürettiği sql dosyalarına development anına bakman lazım. N+1 sorunu diye bir sorun ormlerde yaygın. Bazen optimum sorgu üretmiyor. Gidip tek tek çekebiliyor. O yüzden ormlerde ürettiğin sorguyu kontrol etmekte yarar var.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.