Entity Framework SQL ile Neler Yapıyor
Entity Framework kullanımı veritabanı işlemlerimizi kolaylaştırıyor. Bu gerçekten de üzerinden bir anda geçilmeyecek bir gerçek. Ama bu kullanımlar doğru olmadığı zaman yavaşlık veya daha farklı peformans problemleriyle karşı karşıya kaldığımızda bu işin diğer bir yüzüdür. Ama bu bütün orm araçları içinde geçerli bir durumdur. Peki EF’in bizim için arkada neler yaptığını nasıl takip edebiliriz. İşte bugün bunu nasıl yapacağımızı gösteren araçları ve teknikleri birlikte göreceğiz. Bu araçlar ve teknikler ile sqllerinizi inceleyebilirsiniz.
-
SQL Profiler
Sql server veya farklı bir veritabanı üzerinde çalışan sqlleri SQL yönetim araçları ile incelemenizi çalışma sürelerini incelemenizi sağlar. Bu teknik için veritabanı ekibinden destek almanız gerekebilir. Bu tekniği aşağıdaki iki teknikle birlikte mutlaka kullanmanızı öneririm. Hatta bir ORM aracı kullanmıyor olsanız daha sql profiler aracı ile sqllerinizi incelemeniz gerekmektedir.
-
EF SQL ifadelerini loglama / To.TraceString()
12345678910111213IQueryable query = from x in customerEntitieswhere x.id = 1select x;var sqlEF = ((System.Data.Objects.ObjectQuery)query).ToTraceString();// EF6 içinvar sqlForEF6 = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString();
Yukarıda göreceğiniz teknik ile kodunuz içerisinden EF’in oluşturduğu sql ifadelerine erişebilir ve bunları loglayabilirsiniz. Bu ifadeleri sorgulama ekranına kopyalayarak çalıştırabilirsiniz. Fakat sorgularınız içinde parametre var ise bu teknik tam anlamıyla işinize yaramayabilir. Bunun için yukarıdaki tekniği kullanamanız gerekebilir. -
LINQPad
Linqpad denemek için bu adresten indirebilirsiniz. Adreste kullanım videolarınıda görebilirsiniz. Uygulamanızda kullanmak istediğiniz LINQ ifadelerini denemek için güzel bir araç olmasının yanında yazdığınız program bloklarınıda çalıştırabilir. Böylece program bloklarını deneyebileceğiniz ve daha sonra projenize ekleyebileceğiniz bir ortam sağlar.