Merhaba, bu gün sizlere ınclude ve join kullanımı göstereceğim,


ilk olarak ınclude başlayalım, asp.net core MVC kısmında EFBlogDal (Sizde Farklı Olabilir) giriyoruz ve oraya özel bir method oluşturuyoruz.

örnek :


public List<Blog> getBlogWithAuthorAndCategory() {

  using (var c = new CvBlogContext())

            {

return context.Blogs.Include(a => a.Author).Include(a => a.Category).ToList();

}

}


Include kullanımı bu şekilde ama bunun tek sıkıntısı controller kısmında listeleme yapamıyorsunuz oluşturduğumuz methodun için de sadece belirtiğimiz columnslardan çekiyoruz listeleme yapamıyoruz.


Join

Join ise tam tersi yani Grupluyoruz aslında iki columnsu ve groupladığımız için listeleme yapabiliyoruz.


Örnek 


public Blog getBlogsWithAuthorAndCategory(int id) {


var blog = _context.blogs

.Join(_context.Author.AsNoTracking(),

blog => blog.AuthorID,

authur => AuthorID,

{blog, author} new {Author = author, Blog = blog}).FirstOrDefault(b => b.Blog.BlogID == id );

}


Peki buna nasıl category ekleyeceğiz dediğinizi duyar gibiyim bende ilk öğrendiğimde bunu sormuştum :) hemen onuda bir örnekle anlatayim.


public Blog getBlogsWithAuthorAndCategory(int id) {


var blog = _context.blogs

.Join(_context.Author.AsNoTracking(),

blog => blog.AuthorID,

authur => AuthorID,

{blog, author} new {Author = author, Blog = blog}).Join(_context.Categories.AsNoTracking(),

blogWithAuthor => blogWithAuthor.Blog.AuthorID,

category =>  category.CategoryID,

{blogWithAuthor, category} => new {Category = category, Author = blogWithAuthor.Author, blog = blogWithAuthor.Bog}).FirstOrDefault(b => b.Blog.BlogID == id );

}

Image placeholder