EF Core'da Sorguya İlişkili Modelleri Dahil Etme veya Etmeme

03.05.2021 10:42
#EF-CORE #NET-CORE #İNCLUDE-PROPERTY

EF Core'da Sorguya İlişkili Modelleri Dahil Etme veya Etmeme

.Net Core ile geliştirmiş olduğum bir projede ihtiyacım olması sonucu öğrenmiş olduğum, sorguya ilişkili modelleri ekleme veya eklememe işlemini anlatacağım.

Yaptığınız bir sorguda iç içe bağımlı modeller olabilir. Yaptığınız sorgu sırasında bu ilişkili modellere ihtiyacınız yoksa, gereksiz yere veri çekmiş olacaksınız. Bu da projenin yavaşlamasına sebep olacaktır.

İlişkisel yapıyı düzgün bir şekilde yaptıysanız, varsayılan olarak ilişkisel modeller boş olarak dönecektir. Eğer ilişkisel modellerinizi sorguya dahil etmek istiyorsanız kullanacağınız metod include metodu oluyor. Kullanımına örnek vermek gerekirse şu şekilde olacaktır.

Kullanılan Model Yapısı

public class Products

{

    public int ProductID { get; set; }

    public string ProductName { get; set; }

    public int ProductOwnerID { get; set; }

    public  User ProductOwner { get; set; }

}

    public class User

    {

        public int UserID { get; set; }

        public string UserFirstName { get; set; }

        public string UserLastName { get; set; }

        public ICollection<Product> Products { get; set; }

    }

EF Core Include Metodu

context.Products.Include(x=>x.ProductOwner).OrderBy(x => x.ProductID);

Include metodunu yazdığınız takdirde mevcut sorgunuza proje sahibine ait bilgileri de dahil edecektir.

Eğer sorgunuza ilişkili modelleri dahil etmek istemiyorsanız include metodunu silmeniz yeterli olacaktır.

Not: Bazı durumlarda include'u silsek bile ilişkili modeller gelmeye devam ediyor. Bu durumda AsNoTracking() metodunu sorgumuza dahil ettiğimiz takdirde sorun ortadan kalkmış oluyor.