{"push_id":2385018394,"size":181,"distinct_size":1,"ref":"refs/heads/dev","head":"e1735c5a04777a7129a62cc47b84b75db157ff13","before":"d7c350faaeace555c727a9b7cc38298e51d1cb46","commits":[{"sha":"a5a010e18934d61d236587f28869443e33bb34bf","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":":green_heart: React more to aspnet/Microsoft.Data.Sqlite#475\n\nFixes aspnet/Microsoft.Data.Sqlite#476","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/a5a010e18934d61d236587f28869443e33bb34bf"},{"sha":"b95f23ffa4fbba305b3f0ea4c864fe53f456ad58","author":{"name":"Maurycy Markowski","email":"c33a65464279d3616f06e44b1e24fd2074a4f0c8@microsoft.com"},"message":"Fix to #9282 - Query: optimize queries projecting correlated collections, so that they don't result in N+1 database queries\n\nThis feature optimizes a number of queries that project correlated collections. Previously those would produce N+1 queries. Now, we rewrite queries similarly to how Include pipeline does it, producing only two queries and correlating them on the client.\nTo enable the feature the inner subquery needs to be wrapped around ToList() or ToArray() call.\n\nCurrent limitations:\n- only works for sync queries,\n- doesn't work if the parent query results in a CROSS JOIN,\n- doesn't work with result operators (i.e. Skip/Take/Distinct)\n- doesn't work if outer query needs client evaluation anywhere outside projection (e.g. order by or filter by NonMapped property)\n- doesn't work if inner query is correlated with query two (or more) levels up, (e.g. customers.Select(c => c.Orders.Select(o => o.OrderDetails.Where(od => od.Name == c.Name).ToList()).ToList())\n- doesn't work in nested scenarios where the outer collection is streaming (e.g. customers.Select(c => c.Orders.Select(o => o.OrderDetails.Where(od => od.Name != \"Foo\").ToList())) - to make it work, outer collection must also be wrapped in ToList(). However it is OK to stream inner collection - in that case outer collection will take advantage of the optimization.\n\nOptimization process:\n\noriginal query:\n\nfrom c in ctx.Customers\nwhere c.CustomerID != \"ALFKI\"\norderby c.City descending\nselect (from o in c.Orders\n        where o.OrderID > 100\n        orderby o.EmployeeID\n        select new { o.OrderID, o.CustomerID }).ToList()\n\nnav rewrite converts it to:\n\nfrom c in customers\nwhere c.CustomerID != \"ALFKI\"\norder by c.City descending\nselect\n   (from o in orders\n    where o.OrderID > 100\n    order by o.EmployeeID\n    where c.CustomerID ?= o.CustomerID\n    select new { o.OrderID, o.CustomerID }).ToList()\n\nwhich gets rewritten to (simplified):\n\nfrom c in customers\nwhere c.CustomerID != \"ALFKI\"\norder by c.City desc, c.CustomerID asc\nselect CorrelateSubquery(\n    outerKey: new { c.CustomerID },\n    correlationPredicate: (outer, inner) => outer.GetValue(0) == null || inner.GetValue(0) == null ? false : outer.GetValue(0) == inner.GetValue(0)\n    correlatedCollectionFactory: () =>\n        from o in orders\n        where o.OrderID > 100\n        join _c in\n            from c in customers\n            where c.CustomerID != \"ALFKI\"\n            select new { c.City, c.CustomerID }\n        on o.CustomerID equals _c.GetValue(1)\n        order by _c.GetValue(0) descending, _c.GetValue(1), o.EmployeeID\n        select new\n        {\n            InnerResult = new { o.OrderID, o.CustomerID }\n            InnerKey = new { o.CustomerID },\n            OriginKey = new { _c.GetValue(1) }\n        }).ToList()\n\nCorrelateSubquery is the method that combines results of outer and inner queries. Because order for both queries is the same we can perform only one pass thru inner query.\nWe use correlation predicate (between outerKey parameter passed to CorrelateSubquery and InnerKey which is part of the final result) to determine whether giver result of the inner query belongs to the outer.\nWe also remember latest origin key (i.e. PK of the outer, which is not always the same as outer key). If the origin key changes, it means that all inners for that outer have already been encountered.","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/b95f23ffa4fbba305b3f0ea4c864fe53f456ad58"},{"sha":"714e13180f6fd5a107236a0b695db3cdc6ab7d07","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":":green_heart: Fix TransactionOracleTest","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/714e13180f6fd5a107236a0b695db3cdc6ab7d07"},{"sha":"972b71ffaf73a73c14e455b18801b7391f27467f","author":{"name":"Arthur Vickers","email":"3ab3eba5bb36eedaa911f5295a439bc48ecf25e4@hotmail.com"},"message":"Lazy-loading proxies package\n\nPart of #10509, #3797.\n\nThis change adds a new package--Microsoft.EntityFrameworkCore.Proxies--that contains a lazy-loading proxy implementation making use of the EF lazy-loading infrastructure and the Castle.Core proxies package. Current plan is for this to ship on NuGet as an optional package for use with EF.\n\nTo use in a normal application, just add a call to `UseLazyLoadingProxies()` on the DbContext options builder.\n\nThere are also `context.CreateProxy()` methods for creating stand-alone proxy instances if needed.\n\nEntity types must be public and navigation properties must be virtual. Also, the entity type and constructor must be \"visible\" to the castle proxies assembly, which usually means public, but could mean internal if \"InternalsVisibleTo\" is used. Exceptions are thrown if these requirements are not met--you don't just not get a proxy like in EF6.\n\nNote that this is an optional package for EF that we chose to create because the infrastructure in place made it easy to do so. It does not preclude a Roslyn-based rewriting solution in the future.","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/972b71ffaf73a73c14e455b18801b7391f27467f"},{"sha":"b271241a28c7f19fdf259add3a576880ec72a710","author":{"name":"Anthony Sneed","email":"59db37dd0a1458e16c2dffa797f972d03fa29423@tonysneed.com"},"message":"Generate DbContext Class in a Different Location\n- Add outputDbContextDir to ReverseEngineerScaffolder.Save\n- Add outputDbContextDir to OperationExecutor.ScaffoldContext\n- Add outputDbContextDir to DbContextScaffoldCommand","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/b271241a28c7f19fdf259add3a576880ec72a710"},{"sha":"1e5756a7d891a4ea8ca31143ef2be0caa43e5897","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Tweak PR #10356","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/1e5756a7d891a4ea8ca31143ef2be0caa43e5897"},{"sha":"c0d127c7c23396ab03ce71fe78d0b4f2a79fdfa3","author":{"name":"AndriySvyryd","email":"8cb607b2dcfb667fdcd936d1b81046e8ad31e773@microsoft.com"},"message":"Undo a breaking change on Internal API\n\nFixes #10708","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/c0d127c7c23396ab03ce71fe78d0b4f2a79fdfa3"},{"sha":"93680d9a23693bd82e5f24c38b0ac6856965806e","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Add EFCore.Proxies.csproj to EFCore.Runtime.sln","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/93680d9a23693bd82e5f24c38b0ac6856965806e"},{"sha":"f9fc84695edb843ab1a22c0eacf138aef20def67","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Add EFCore.Proxies to OracleProvider.sln","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/f9fc84695edb843ab1a22c0eacf138aef20def67"},{"sha":"e4ff0b2b199a0fa0b64b9d5d24a62f811111decd","author":{"name":"Andrew Peters","email":"a4bcd3bda441d1daaa4531d4ca0035bf13ad06c2@microsoft.com"},"message":"Fix: #9210: Owned type is not being included on a query that includes its owner type as a navigation property.\n\nModified IncludeCompiler to bring in eager loaded navigations when building the include load tree.","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/e4ff0b2b199a0fa0b64b9d5d24a62f811111decd"},{"sha":"e1a82f179995adc54c7f1cf14f764a7260f9e736","author":{"name":"Maurycy Markowski","email":"c33a65464279d3616f06e44b1e24fd2074a4f0c8@microsoft.com"},"message":"Fix to #10743 - Query: order by property's length twice throws NRE exception during query compilation\n\nProblem was that when comparing sql functions (to look for duplicate orderby's) we were not taking into account situation when instance for the function was null","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/e1a82f179995adc54c7f1cf14f764a7260f9e736"},{"sha":"42e5403c2bb6154703edf8327b3d1672bae4d36b","author":{"name":"ralmsdeveloper","email":"031d0f8fa0c378700a85051f6591b21b4d8fbcbd@ralms.net"},"message":"Ajustments and Implementation of Migrations for Oracle\n\n**Basics Implementations\n\n*Create Table\n*Create Column\n*Create Index\n*Rename Table\n*Rename Column\n*Rename Index\n*Drop Index\n*Drop Column\n*Drop Table","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/42e5403c2bb6154703edf8327b3d1672bae4d36b"},{"sha":"01372d5a45397216677f1fdd062e6039730b672c","author":{"name":"Maurycy Markowski","email":"c33a65464279d3616f06e44b1e24fd2074a4f0c8@microsoft.com"},"message":"Fix to #10635 - Query: ArgumentOutOfRangeException when using Include and OrderBy by with casting\n\nProblem was that when rewriting QM for Include (or correlated collection optimization) we always assumed that orderbys on the parent collection would be a simple member access. However, in some cases it can be more complicated - if property is declared on interface or base class, there will be a Convert in the tree.\nAlso, orderbys can be specified using EF.Property, which was also not supported.","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/01372d5a45397216677f1fdd062e6039730b672c"},{"sha":"96149b9d71871797a06af5b183f37dbab546ee0b","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Merge branch 'ralmsdeveloper-Dev21' into dev","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/96149b9d71871797a06af5b183f37dbab546ee0b"},{"sha":"bfcb1bcafd2532ccd34f4907f2f08cec98bc7c16","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Oracle Migrations: Clean up\n\nChanges:\n- Remove unused code\n- Remove Transact-SQL parsing (fixes #10591)\n- Simplify implementation (let database throw when unsupported)","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/bfcb1bcafd2532ccd34f4907f2f08cec98bc7c16"},{"sha":"72439b6d56dcc9786ccad626dc219dba07b0f17f","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Migrations: Better matching\n\nChanges:\n* Stronger matching by table, column, and property names\n* Match by root entity types before others (fixes #10099)","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/72439b6d56dcc9786ccad626dc219dba07b0f17f"},{"sha":"908491ca0f55a27c43a7b5b91a92a3714f7c89cd","author":{"name":"Brice Lambson","email":"c04be2bc2699dbf01f000827cc64c5e10694c121@users.noreply.github.com"},"message":"Tools: Work around more class library limitations\n\nChanges our existing workaround to use an MSBuild file in EFCore.Design; adds a workaround for .NET Framework\n\nFixes #10639","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/908491ca0f55a27c43a7b5b91a92a3714f7c89cd"},{"sha":"81361f77a82abb1cc034587eb86134eb4e9cc2cf","author":{"name":"Rafael Almeida","email":"031d0f8fa0c378700a85051f6591b21b4d8fbcbd@ralms.net"},"message":"Fix: #10740 - Repair the database name with apostrophe","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/81361f77a82abb1cc034587eb86134eb4e9cc2cf"},{"sha":"1c5b05738748e00dcd2e338b10580231ab47b926","author":{"name":"Maurycy Markowski","email":"c33a65464279d3616f06e44b1e24fd2074a4f0c8@microsoft.com"},"message":"fixing test verification issue that leads to failing oracle test","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/1c5b05738748e00dcd2e338b10580231ab47b926"},{"sha":"483642e59371784db18ee539b85322abc36ac5bb","author":{"name":"Pranav K","email":"9290eed8148c4c27b178a2ea1b6ca3457a58f174@hotmail.com"},"message":"Branching for 2.1.0-preview1","distinct":false,"url":"https://api.github.com/repos/ErikEJ/EntityFramework/commits/483642e59371784db18ee539b85322abc36ac5bb"}]}
{"actor":{"display_login":"ErikEJ"}}