zoukankan      html  css  js  c++  java
  • EFCore实践教程四

    语法格式参考

    using
    System; using System.Collections.Generic; using System.Linq; using System.Text; namespace EFQuerying.ComplexQuery { public class Sample { public static void Run() { using (var context = new BloggingContext()) { #region Join var query = from photo in context.Set<PersonPhoto>() join person in context.Set<Person>() on photo.PersonPhotoId equals person.PhotoId select new { person, photo }; #endregion } using (var context = new BloggingContext()) { #region GroupJoin var query = from b in context.Set<Blog>() join p in context.Set<Post>() on b.BlogId equals p.PostId into grouping select new { b, grouping }; #endregion } using (var context = new BloggingContext()) { #region GroupJoinComposed var query = from b in context.Set<Blog>() join p in context.Set<Post>() on b.BlogId equals p.PostId into grouping select new { b, Posts = grouping.Where(p => p.Content.Contains("EF")).ToList() }; #endregion } using (var context = new BloggingContext()) { #region SelectManyConvertedToCrossJoin var query = from b in context.Set<Blog>() from p in context.Set<Post>() select new { b, p }; #endregion } using (var context = new BloggingContext()) { #region SelectManyConvertedToJoin var query = from b in context.Set<Blog>() from p in context.Set<Post>().Where(p => b.BlogId == p.BlogId) select new { b, p }; var query2 = from b in context.Set<Blog>() from p in context.Set<Post>().Where(p => b.BlogId == p.BlogId).DefaultIfEmpty() select new { b, p }; #endregion } using (var context = new BloggingContext()) { #region SelectManyConvertedToApply var query = from b in context.Set<Blog>() from p in context.Set<Post>().Select(p => b.Url + "=>" + p.Title) select new { b, p }; var query2 = from b in context.Set<Blog>() from p in context.Set<Post>().Select(p => b.Url + "=>" + p.Title).DefaultIfEmpty() select new { b, p }; #endregion } using (var context = new BloggingContext()) { #region GroupBy var query = from p in context.Set<Post>() group p by p.AuthorId into g select new { g.Key, Count = g.Count() }; #endregion } using (var context = new BloggingContext()) { #region GroupByFilter var query = from p in context.Set<Post>() group p by p.AuthorId into g where g.Count() > 0 orderby g.Key select new { g.Key, Count = g.Count() }; #endregion } using (var context = new BloggingContext()) { #region LeftJoin var query = from b in context.Set<Blog>() join p in context.Set<Post>() on b.BlogId equals p.BlogId into grouping from p in grouping.DefaultIfEmpty() select new { b, p }; #endregion } } } }
    using Microsoft.EntityFrameworkCore;
    using System.Linq;
    
    namespace EFQuerying.RelatedData
    {
        public class Sample
        {
            public static void Run()
            {
                #region SingleInclude
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                        .ToList();
                }
                #endregion
    
                #region IgnoredInclude
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                        .Select(blog => new
                        {
                            Id = blog.BlogId,
                            Url = blog.Url
                        })
                        .ToList();
                }
                #endregion
    
                #region MultipleIncludes
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                        .Include(blog => blog.Owner)
                        .ToList();
                }
                #endregion
    
                #region SingleThenInclude
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                            .ThenInclude(post => post.Author)
                        .ToList();
                }
                #endregion
    
                #region MultipleThenIncludes
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                            .ThenInclude(post => post.Author)
                                .ThenInclude(author => author.Photo)
                        .ToList();
                }
                #endregion
    
                #region MultipleLeafIncludes
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                            .ThenInclude(post => post.Author)
                        .Include(blog => blog.Posts)
                            .ThenInclude(post => post.Tags)
                        .ToList();
                }
                #endregion
    
                #region IncludeTree
                using (var context = new BloggingContext())
                {
                    var blogs = context.Blogs
                        .Include(blog => blog.Posts)
                            .ThenInclude(post => post.Author)
                                .ThenInclude(author => author.Photo)
                        .Include(blog => blog.Owner)
                            .ThenInclude(owner => owner.Photo)
                        .ToList();
                }
                #endregion
                
                #region Eager
                using (var context = new BloggingContext())
                {
                    var blog = context.Blogs
                        .Single(b => b.BlogId == 1);
    
                    context.Entry(blog)
                        .Collection(b => b.Posts)
                        .Load();
    
                    context.Entry(blog)
                        .Reference(b => b.Owner)
                        .Load();
                }
                #endregion
    
                #region NavQueryAggregate
                using (var context = new BloggingContext())
                {
                    var blog = context.Blogs
                        .Single(b => b.BlogId == 1);
    
                    var postCount = context.Entry(blog)
                        .Collection(b => b.Posts)
                        .Query()
                        .Count();
                }
                #endregion
    
                #region NavQueryFiltered
                using (var context = new BloggingContext())
                {
                    var blog = context.Blogs
                        .Single(b => b.BlogId == 1);
    
                    var goodPosts = context.Entry(blog)
                        .Collection(b => b.Posts)
                        .Query()
                        .Where(p => p.Rating > 3)
                        .ToList();
                }
                #endregion
            }
        }
    }
    using Microsoft.EntityFrameworkCore;
    using System.Linq;
    
    namespace EFQuerying.Tracking
    {
        public class Sample
        {
            public static void Run()
            {
                using (var context = new BloggingContext())
                {
                    context.Database.EnsureDeleted();
                    context.Database.EnsureCreated();
                }
    
                using (var context = new BloggingContext())
                {
                    // seeding database
                    context.Blogs.Add(new Blog { Url = "http://sample.com/blog" });
                    context.Blogs.Add(new Blog { Url = "http://sample.com/another_blog" });
                    context.SaveChanges();
                }
    
                using (var context = new BloggingContext())
                {
                    #region Tracking
                    var blog = context.Blogs.SingleOrDefault(b => b.BlogId == 1);
                    blog.Rating = 5;
                    context.SaveChanges();
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region NoTracking
                    var blogs = context.Blogs
                        .AsNoTracking()
                        .ToList();
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region ContextDefaultTrackingBehavior
                    context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
    
                    var blogs = context.Blogs.ToList();
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region CustomProjection1
                    var blog = context.Blogs
                        .Select(b =>
                            new
                            {
                                Blog = b,
                                PostCount = b.Posts.Count()
                            });
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region CustomProjection2
                    var blog = context.Blogs
                        .Select(b =>
                            new
                            {
                                Blog = b,
                                Post = b.Posts.OrderBy(p => p.Rating).LastOrDefault()
                            });
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region CustomProjection3
                    var blog = context.Blogs
                        .Select(b =>
                            new
                            {
                                Id = b.BlogId,
                                Url = b.Url
                            });
                    #endregion
                }
    
                using (var context = new BloggingContext())
                {
                    #region ClientProjection
                    var blogs = context.Blogs
                        .OrderByDescending(blog => blog.Rating)
                        .Select(blog => new
                        {
                            Id = blog.BlogId,
                            Url = StandardizeUrl(blog)
                        })
                        .ToList();
                    #endregion
                }
            }
    
            #region ClientMethod
            public static string StandardizeUrl(Blog blog)
            {
                var url = blog.Url.ToLower();
    
                if (!url.StartsWith("http://"))
                {
                    url = string.Concat("http://", url);
                }
    
                return url;
            }
            #endregion
        }
    }
  • 相关阅读:
    成功更容易光顾磨难和艰辛,正如只有经过泥泞的道路才会留下脚印
    只要信心在,勇气就在,努力在,成功就在!
    不积跬步无以至千里,不积小流无以成江海
    你给自己留的退路越多,你失败的可能性就越大
    不要质疑你的付出,这些都会是一种累积一种沉淀,它们会默默铺路,只为让你成为更优秀的人
    生活的一大乐趣便是完成别人认为你不能做到的事情
    优于别人,并不高贵,真正的高贵,是优于过去的自己
    再长的路 ,一步步也能走完,再短的路,不迈开双脚也不无法到达!
    09SpringAopAdvice
    java中接口(interface)和虚基类(abstract class)的区别
  • 原文地址:https://www.cnblogs.com/wangchuang/p/12318877.html
Copyright © 2011-2022 走看看