рдУрдЖрд░рдПрдо рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдПрдЪреНрд▓реАрд╕ рд╣реАрд▓ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИ рдХрд┐ рд╕реАрдЖрд░рдпреВрдбреА рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдХреЗрд╡рд▓ рдмрдирд╛рдПрдБ рдФрд░ рдкрдврд╝реЗрдВ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрджреНрдпрддрди рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рдмреЙрдХреНрд╕рд┐рдВрдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреВрд░реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░, рд╣рд╛рдВ, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рднреА рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╛рдиреА рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
using (var ctx = new ShopEntities()) { foreach (var u in ctx.Users) { ctx.Users.Remove(u); } ctx.SaveChanges(); }
рд▓реЗрдХрд┐рди EntityFramework.Extended рдкреИрдХреЗрдЬ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рд░рд╣реА рд╣реИред
рддреЛ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ "рдЗрдВрд╕реНрдЯреЙрд▓-рдкреИрдХреЗрдЬ EntityFramework.Extended" рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдирд╛рдорд╕реНрдерд╛рди "EntityFramework.Extensions" рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
рдФрд░ рдЬрд╛рджреВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рдирд┐рд╖реНрдХрд╛рд╕рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
using (var ctx = new ShopEntities()) { var itemsDeleted = ctx.Users.Delete(u => u.Orders.Count > 10);
рд╡реИрд╕реЗ, рдпрд╣ рджреЗрдЦрдирд╛ рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрдпрд╛ рд╣реБрдЖред
рдРрд╕рд╛ рдирд┐рд╡реЗрджрди рдерд╛
DELETE [dbo].[Users] FROM [dbo].[Users] AS j0 INNER JOIN ( SELECT [Project1].[ID] AS [ID] FROM ( SELECT [Extent1].[ID] AS [ID], (SELECT COUNT(1) AS [A1] FROM [dbo].[Orders] AS [Extent2] WHERE [Extent1].[ID] = [Extent2].[UserID]) AS [C1] FROM [dbo].[Users] AS [Extent1] ) AS [Project1] WHERE [Project1].[C1] > 10 ) AS j1 ON (j0.[ID] = j1.[ID]) go
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдИрдорд╛рдирджрд╛рд░ (рдпрджреНрдпрдкрд┐ рдЕрдирд╛рдбрд╝реА) рд╕рдореВрд╣ рдПрдХ рд╢рд░реНрдд рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣ рдЕрджреНрдпрддрди рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рдеред рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред
using (var ctx = new ShopEntities()) { var itemsUpdated = ctx.Users.Where(u => u.Orders.Count > 0).Update(u => new User { BonusCount = u.BonusCount + 1 });
рд╣рдо рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдореЗрдВ SQL рдХреНрд╡реЗрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
UPDATE [dbo].[Users] SET [BonusCount] = [BonusCount] + 1 FROM [dbo].[Users] AS j0 INNER JOIN ( SELECT [Project1].[ID] AS [ID] FROM ( SELECT [Extent1].[ID] AS [ID], (SELECT COUNT(1) AS [A1] FROM [dbo].[Orders] AS [Extent2] WHERE [Extent1].[ID] = [Extent2].[UserID]) AS [C1] FROM [dbo].[Users] AS [Extent1] ) AS [Project1] WHERE [Project1].[C1] > 0 ) AS j1 ON (j0.[ID] = j1.[ID]) go
рдпреЗ рджреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рд▓реЗрдХрд┐рди рдЪреАрдиреА рднреА рд╣реИред рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╣рдореЗрдВ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рднреМрддрд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдбреЗрдЯрд╛ рдХреЛ Future () рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░, рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рднреМрддрд┐рдХ рдХрд░рддреЗ рд╕рдордп, рд╢реЗрд╖ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднреМрддрд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
using (var ctx = new ShopEntities()) { var alexUsers = ctx.Users.Where(u => u.Name == "Alex").Future(); var usersWithOrders = ctx.Users.Where(c => c.Orders.Any()).Future(); foreach (var item in alexUsers)
рд▓реЗрдХрд┐рди рдРрд╕реА SQL рдХреНрд╡реЗрд░реА рдереА
рдлреНрдпреВрдЪрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ FutureCount, FutureFirstOrDefault, FutureValue рднреА рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рдВрд╢реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдгред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдХреГрдкрдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреИрд╢ рд╕рдВрджрд░реНрдн рд╕реЗ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред
for (int i = 0; i < 2; i++) { using (var ctx = new ShopEntities()) { var alexUsers = ctx.Users.Where(u => u.Name == "Alex").FromCache(); foreach (var item in alexUsers)
FromCache рд╡рд┐рдзрд┐ рдХреИрд╢рд┐рдВрдЧ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рднрд╛рд░ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, EntityFramework.Extended рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ EntityFramework рдХреА рдмрдЪрдкрди рдХреА рдмреАрдорд╛рд░реА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рддреЗрдЬ рдХрд░рддрд╛ рд╣реИред