рдкрд░рд┐рдЪрдп
╨Т
рдпрд╣рд╛рдВ рд╣рдо рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ LINQ рдкреНрд░рд╢реНрди.
рд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ LINQ(рднрд╛рд╖рд╛-рдПрдХреАрдХреГрдд рдХреНрд╡реЗрд░реА) рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднрд╛рд╖рд╛ рд╣реИред
╨Р LINQ рд╕реЗ SQL DBMS рдореЗрдВ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдПрдХ рддрдХрдиреАрдХ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, DBMS рд╕реЗ рд╣рдорд╛рд░рд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдПрдордПрд╕ SQL тАЛтАЛрд╕рд░реНрд╡рд░.
рд╣рд╛рд▓рд╛рдВрдХрд┐, LINQ рдкреНрд░рд╢реНрди рд╕рд░реНрд╡реЛрддреНрддрдо рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╢рдмреНрджреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрди, рдЬрд┐рд╕реЗ рдПрдХ рдЕрдиреБрднрд╡реА рдбреАрдмреАрдП рдЕрдиреБрдХреВрд▓рди рдХреА рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрди:
- рдЗрд╖реНрдЯрддрдо рдХрдиреЗрдХреНрд╢рди (рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ) рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ (рдХрд╣рд╛рдВ)
- рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рдореВрд╣ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ
- рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрдИ рднрд┐рдиреНрдирддрд╛рдПрдБ IN рдкрд░ рдореМрдЬреВрдж рд╣реИ╨╕ рдЕрдВрджрд░ рдирд╣реА, <> рдЪрд╛рд▓реВ рдореМрдЬреВрдж рд╣реИ
- рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рд╕реАрдЯреАрдИ, рддрд╛рд▓рд┐рдХрд╛ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдордзреНрдпрд╡рд░реНрддреА рдХреИрд╢рд┐рдВрдЧ
- рд╡рд╛рдХреНрдп рдХрд╛ рдкреНрд░рдпреЛрдЧ (рд╡рд┐рдХрд▓реНрдк) рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рде рдореЗрдВ (...)
- рдЪрдпрди рдХреЗ рджреМрд░рд╛рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд░реАрдбрд┐рдВрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рдПрдХ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдкрд░рд┐рдгрд╛рдореА рдореБрдЦреНрдп рдкреНрд░рджрд░реНрд╢рди рдмрд╛рдзрд╛рдПрдБ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрди рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп LINQ рдкреНрд░рд╢реНрди рд╣реИрдВ:
- рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛ рдЪрдпрди рддрдВрддреНрд░ рдХрд╛ рд╕рдореЗрдХрди
- рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдмреНрд▓реЙрдХреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдирд╛, рдЬреЛ рдЕрдВрддрддрдГ рдХрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд░реАрдбреНрд╕ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ
- рдмрд╣реБ-рдШрдЯрдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ (рддрд╛рд░реНрдХрд┐рдХ "рдФрд░" рдФрд░ "рдпрд╛") - рдФрд░ ╨╕ OR, рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдпреЛрдЬрди, рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░, рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЧреИрд░-рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рд╡рд╛рд▓реЗ, рдЕрдВрддрддрдГ рдХреНрд▓рд╕реНрдЯрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реНрдХреИрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ (рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдХреИрди) рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рджреНрд╡рд╛рд░рд╛
- рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреА рдбреАрдк рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдмрдирд╛ рджреЗрддреА рд╣реИ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрдерди рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдУрд░ рд╕реЗ рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдбреАрдмреАрдП
рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрд░реАрдХреЗ
рдЕрдм рд╕реАрдзреЗ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
1) рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдХреНрд░рдордг
рдореБрдЦреНрдп рдЪрдпрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдкреВрд░реА рдХреНрд╡реЗрд░реА рдПрдХ рдпрд╛ рджреЛ рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд▓реЛрдЧ-рд╕рдВрдЪрд╛рд▓рди) рдХреЗ рдЖрд╕рдкрд╛рд╕ рдФрд░ рд╢рд░реНрддреЛрдВ рдХреЗ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ (IsClosed, Canceled, Enabled, status) рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдирдореВрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдпрд╣ рд╕рдорд╛рдзрд╛рди рддрдм рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЗрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдЪрдпрди рдХреНрд╡реЗрд░реА рдореЗрдВ рд▓реМрдЯрд╛рдП рдЧрдП рд╕реЗрдЯ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 500000 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЗрд╡рд▓ 2000 рд╕рдХреНрд░рд┐рдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВред рддрдм рдПрдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрдпрдирд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рд╣рдореЗрдВ рдмрдЪрд╛рдПрдЧрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╕реНрдХреИрди рдПрдХ рдмрдбрд╝реА рдореЗрдЬ рдкрд░ рдФрд░ рдЖрдкрдХреЛ рдЧреИрд░-рд╕рдВрдХреБрд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рд╛рде рд╣реА, рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдХрдореА рдХреЛ рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдп рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдордПрд╕ SQL тАЛтАЛрд╕рд░реНрд╡рд░:
рд╕реНрдерд╛рдирд┐рдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдореЗрдВ рд▓реБрдкреНрдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдЦрд░рд╛рдм рд▓рд┐рдЦреЗ рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ LINQ рдкреНрд░рд╢реНрди ╨╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрди.
рдЬреИрд╕рд╛ рдХрд┐ рдЬреАрд╡рди рдХреЗ рдХрдареЛрд░ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдХрд┐рд╕реА рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рд╕реАрдорд╛ рддрдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рднрд╛рд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд╡реАрдирддрдо рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджреЗрд░реА рдХрд░рдХреЗ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЦреЛрдЬ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ MS SQL рдЕрдиреБрдХреВрд▓рди рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдорд╛рди рд╕реЗрдЯ рд╡рд╛рд▓реЗ рдЗрдВрдбреЗрдХреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ
- рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдиреБрдХреНрд░рдордг рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред
рдпрд╣рд╛рдВ ).
2) рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдирд╛
рдХрднреА-рдХрднреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдЫ рдлрд╝реАрд▓реНрдб, рдЬреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВ, рдХреЛ рдПрдХ рдирдП рдлрд╝реАрд▓реНрдб рдХреЛ рд╢реБрд░реВ рдХрд░рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╕реНрдерд┐рддрд┐ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдпрд╛ рддреЛ рдмрд┐рдЯ рдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг:
рдмрдВрдж рд╣реИ = 0 рдФрд░ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ = 0 рдФрд░ рд╕рдХреНрд╖рдо = 0 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕реНрдерд┐рддрд┐ = 1.
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реНрдерд┐рддрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рднрд░реА рд╣реБрдИ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореМрд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдгрдирд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред
3) рджреГрд╢реНрдп рдХрд╛ рднреМрддрд┐рдХреАрдХрд░рдг
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрдВ LINQ рдкреНрд░рд╢реНрди рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рд╕реАрдЯреАрдИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдЪрд░ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдпред
рд╕реНрдерд┐рддрд┐ рд╕рдореВрд╣ (рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ) рдмрдВрдж рд╣реИ = 0 рдФрд░ рд░рджреНрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ = 0 рдФрд░ рд╕рдХреНрд╖рдо = 0 (рдпрд╛ рдЕрдиреНрдп рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ) рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реБрдП, рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдмрди рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдореВрд░реНрдд рд░реВрдк рджреЗрддреЗ рд╕рдордп рдХрдИ рдкреНрд░рддрд┐рдмрдВрдз рд╣реЛрддреЗ рд╣реИрдВ:
- рдЙрдкрдкреНрд░рд╢реНрдиреЛрдВ, рдЙрдкрд╡рд╛рдХреНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореМрдЬреВрдж рд╣реИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ
- рдЖрдк рд╡рд╛рдХреНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╕рдВрдШ, рдпреВрдирд┐рдЕрди рдСрд▓, рдЕрдкрд╡рд╛рдж, рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдХрд╛рдЯрдирд╛
- рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХреЗрдд рдФрд░ рдЦрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╡рд┐рдХрд▓реНрдк
- рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ
- рд╡рд┐рднрд┐рдиреНрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ
рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рдХреЗрд╡рд▓ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдХреЗ рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рджреГрд╢реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдЗрди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд╕рд╛рде(NOEXPAND).
рдЪреВрдВрдХрд┐ LINQ рдкреНрд░рд╢реНрди рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ - рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдХрд╛ рдПрдХ "рд░реИрдкрд░":
CREATE VIEW ╨Ш╨Ь╨п_╨┐╤А╨╡╨┤╤Б╤В╨░╨▓╨╗╨╡╨╜╨╕╤П AS SELECT * FROM MAT_VIEW WITH (NOEXPAND);
4) рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрдХреНрд╕рд░ рдореЗрдВ LINQ рдкреНрд░рд╢реНрди рд╕рдмрдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рдмрдбрд╝реЗ рдмреНрд▓реЙрдХ рдпрд╛ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓реЗ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдФрд░ рдЙрдк-рдЗрд╖реНрдЯрддрдо рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрддрд┐рдо рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВред
рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн LINQ рдкреНрд░рд╢реНрди:
- рджреГрд╢реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдлрд╝рдВрдХреНрд╢рди рд╕реЗ (@param1, @param2 ...)
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓рдЪреАрд▓рд╛ рдбреЗрдЯрд╛ рдирдореВрдирд╛рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рддрд╛рд▓рд┐рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрд╕реЗ рдХреЛрдИ рдордЬрдмреВрдд рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВ:
- рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХреЗрдд:
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ LINQ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рдХреМрди рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдпреЗ рдХреНрд╖рдорддрд╛рдПрдВ рд╣реИрдВред
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рдХрд╛рдлреА рд╕реНрдерд┐рд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЗрдВрдбреЗрдХреНрд╕ рдФрд░ рдбреЗрдЯрд╛ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдирдореВрдирд╛рдХрд░рдг рддрд░реНрдХ (рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА)
- рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
- рдХреЗ рдЙрдкрдпреЛрдЧ рд╕рдВрдШ ╨╕ рдореМрдЬреВрдж рд╣реИ
- рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХреЗрдд:
- рдкреНрд░рд╕реНрддрд╛рд╡ рд╡рд┐рдХрд▓реНрдк рдЬрдм рд╣рдореЗрдВ рд╕рдорд╡рд░реНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рд╡рд┐рдХрд▓реНрдк(рдореИрдХреНрд╕рдбреЙрдк рдПрди), рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХрд╛ рдХреНрд░рдоред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдЖрдк рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЬрдмрд░рди рдкреБрдирдГ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд┐рдХрд▓реНрдк (рдкреБрдирдГрд╕рдВрдХрд▓рди)
- рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЬреЙрдЗрди рдСрд░реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВ рд╡рд┐рдХрд▓реНрдк (рдмрд▓ рдЖрджреЗрд╢)
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдХрд▓реНрдк рд╡рд░реНрдгрд┐рдд
рдпрд╣рд╛рдВ . - рд╕рдмрд╕реЗ рд╕рдВрдХреАрд░реНрдг рдФрд░ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ), рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рднреА рдбреЗрдЯрд╛ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╣рд╛рдВ рддреАрди рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдП, рдмреА, рд╕реА).рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рд╕реНрдерд┐рд░ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдП = 0 рдФрд░ рдмреА = 0.
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз c рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓.
рдЪрд▓реЛ рд╢рд░реНрдд рдП = 0 рдФрд░ рдмреА = 0 рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рдгрд╛рдореА рд╕реЗрдЯ рдХреЛ рд╣рдЬрд╛рд░реЛрдВ рд░рд┐рдХреЙрд░реНрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд░реНрдд рдЪрд╛рд▓реВ рд╣реИ ╤Б рдЪрдпрди рдХреЛ рд╕реМ рд░рд┐рдХреЙрд░реНрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА, рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдФрд░ рд╕реБрд╕рдВрдЧрдд рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг
рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдкреНрд░рд╢реНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗрдВред
рдПрдХ рдирд┐рд╡реЗрджрди рд╣реИ рдЪреБрдирддреЗ рд╣реИрдВ, рдЬреЛ рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рджреГрд╢реНрдп (рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╢реНрдЪрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдмрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ (рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдореМрдЬреВрдж рд╣реИ) рд╕реЗ "рд╕рдХреНрд░рд┐рдп рдХреНрд╡реЗрд░реАрдЬрд╝" ([рдСрдкрд░реЗрдЯрд┐рд╡ рдкреНрд░рд╢реНрди]):
рдЕрдиреБрд░реЛрдз рдХреНрд░рдорд╛рдВрдХ 1
(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM [dbo].[Questions] AS [Extent1]
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id],
[Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId],
[Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4]
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2]
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[OperativeQuestions] AS [Extent5]
WHERE (([Extent5].[Email] = @p__linq__0) OR (([Extent5].[Email] IS NULL)
AND (@p__linq__0 IS NULL))) AND ([Extent5].[Id] = [Extent1].[Id])
));
рджреГрд╢реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ: рдЗрд╕рдореЗрдВ рд╕рдмрдХреНрд╡реЗрд░реА рдЬреБрдбрд╝рддреА рд╣реИ рдФрд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ DISTINCT, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдХрд╛рдлреА рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдСрдкрд░реЗрд╢рди рд╣реИред
рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╢реНрдЪрди рдХрд╛ рдПрдХ рдирдореВрдирд╛ рд▓рдЧрднрдЧ рджрд╕ рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╣реИред
рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдХреНрд╡реЗрд░реА рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рдмрдХреНрд╡реЗрд░реА рдХреЛ [рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╢реНрдЪрди] рджреГрд╢реНрдп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ [рдИрдореЗрд▓] = @p__linq__0 рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдЪрдпрди рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдореМрдЬреВрдж рд╣реИ) рд╕реИрдХрдбрд╝реЛрдВ рд░рд┐рдХреЙрд░реНрдб рддрдХред
рдФрд░ рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрдХреНрд╡реЗрд░реА рдХреЛ рдПрдХ рдмрд╛рд░ [рдИрдореЗрд▓] = @p__linq__0 рджреНрд╡рд╛рд░рд╛ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рдЗрди рд╕реМ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреНрд╡реЗрд░реА рддреЗрдЬрд╝ рд╣реЛрдЧреАред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ: рдСрдкрд░реЗрдЯрд┐рд╡ рдкреНрд░рд╢реНрдиреЛрдВ рд╕реЗ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЖрдИрдбреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдФрд░ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рд╕рднреА рд╣рдЬрд╛рд░реЛрдВ рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╢реНрдЪрди рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЗрд╡рд▓ рд░реБрдЪрд┐ рдХреЗ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдСрдкрд░реЗрдЯрд┐рд╡ рдкреНрд░рд╢реНрди рдкрд╛рда рджреЗрдЦреЗрдВ:
рдЕрдиреБрд░реЛрдз рдХреНрд░рдорд╛рдВрдХ 2
CREATE VIEW [dbo].[OperativeQuestions]
AS
SELECT DISTINCT Q.Id, USR.email AS Email
FROM [dbo].Questions AS Q INNER JOIN
[dbo].ProcessUserAccesses AS BPU ON BPU.ProcessId = CQ.Process_Id
OUTER APPLY
(SELECT 1 AS HasNoObjects
WHERE NOT EXISTS
(SELECT 1
FROM [dbo].ObjectUserAccesses AS BOU
WHERE BOU.ProcessUserAccessId = BPU.[Id] AND BOU.[To] IS NULL)
) AS BO INNER JOIN
[dbo].Users AS USR ON USR.Id = BPU.UserId
WHERE CQ.[Exp] = 0 AND CQ.AnswerId IS NULL AND BPU.[To] IS NULL
AND (BO.HasNoObjects = 1 OR
EXISTS (SELECT 1
FROM [dbo].ObjectUserAccesses AS BOU INNER JOIN
[dbo].ObjectQuestions AS QBO
ON QBO.[Object_Id] =BOU.ObjectId
WHERE BOU.ProcessUserAccessId = BPU.Id
AND BOU.[To] IS NULL AND QBO.Question_Id = CQ.Id));
DbContext рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рджреГрд╢реНрдп рдореИрдкрд┐рдВрдЧ (EF Core 2)
public class QuestionsDbContext : DbContext
{
//...
public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
//...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
}
}
рдкреНрд░рд╛рд░рдВрднрд┐рдХ LINQ рдХреНрд╡реЗрд░реА
var businessObjectsData = await context
.OperativeQuestions
.Where(x => x.Email == Email)
.Include(x => x.Question)
.Select(x => x.Question)
.SelectMany(x => x.ObjectQuestions,
(x, bo) => new
{
Id = x.Id,
ObjectId = bo.Object.Id,
ObjectTypeId = bo.Object.ObjectType.Id,
ObjectTypeName = bo.Object.ObjectType.Name,
ObjectExternalId = bo.Object.ExternalId
})
.ToListAsync();
рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛, рддреИрдпрд╛рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ ("рд╕рдХреНрд░рд┐рдп рдХреНрд╡реЗрд░реАрдЬрд╝") рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред .
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╢реНрдЪрди рджреГрд╢реНрдп рд╕реЗ [рдИрдореЗрд▓] = @p__linq__0 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдлрд╝рдВрдХреНрд╢рди [dbo].[OperativeQuestionsUserMail] рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВред
рдИрдореЗрд▓ рдХреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдХрд░, рд╣рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╡рд╛рдкрд╕ рдорд┐рд▓рддреА рд╣реИ:
рдЕрдиреБрд░реЛрдз рдХреНрд░рдорд╛рдВрдХ 3
CREATE FUNCTION [dbo].[OperativeQuestionsUserMail]
(
@Email nvarchar(4000)
)
RETURNS
@tbl TABLE
(
[Id] uniqueidentifier,
[Email] nvarchar(4000)
)
AS
BEGIN
INSERT INTO @tbl ([Id], [Email])
SELECT Id, @Email
FROM [OperativeQuestions] AS [x] WHERE [x].[Email] = @Email;
RETURN;
END
рдпрд╣ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдорд╛рдиреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдСрдкрд░реЗрдЯрд┐рд╡рдХреНрд╡реЗрд╕реНрдЯрд┐рдпрдВрд╕рдпреВрдЬрд░рдореЗрд▓ рдХреА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдЗрд╖реНрдЯрддрдо рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╖реНрдЯрддрдо рдХреНрд╡реЗрд░реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдЦреНрдд рд╕рдВрд░рдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд░рд┐рдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ...
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдХреНрд╡реЗрд░реА 1 рдХреЛ рдХреНрд╡реЗрд░реА 4 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЕрдиреБрд░реЛрдз рдХреНрд░рдорд╛рдВрдХ 4
(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM (
SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] (@p__linq__0)
) AS [Extent0]
INNER JOIN [dbo].[Questions] AS [Extent1] ON([Extent0].Id=[Extent1].Id)
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id], [Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId], [Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4]
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2]
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]);
DbContext рдореЗрдВ рджреГрд╢реНрдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдорд╛рдирдЪрд┐рддреНрд░рдг (EF Core 2)
public class QuestionsDbContext : DbContext
{
//...
public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
//...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
}
}
public static class FromSqlQueries
{
public static IQueryable<OperativeQuestion> GetByUserEmail(this DbQuery<OperativeQuestion> source, string Email)
=> source.FromSql($"SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] ({Email})");
}
рдЕрдВрддрд┐рдо LINQ рдХреНрд╡реЗрд░реА
var businessObjectsData = await context
.OperativeQuestions
.GetByUserEmail(Email)
.Include(x => x.Question)
.Select(x => x.Question)
.SelectMany(x => x.ObjectQuestions,
(x, bo) => new
{
Id = x.Id,
ObjectId = bo.Object.Id,
ObjectTypeId = bo.Object.ObjectType.Id,
ObjectTypeName = bo.Object.ObjectType.Name,
ObjectExternalId = bo.Object.ExternalId
})
.ToListAsync();
рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдХреНрд░рдо 200-800 рдПрдордПрд╕ рд╕реЗ рдШрдЯрдХрд░ 2-20 рдПрдордПрд╕ рдЖрджрд┐ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╛рдиреА рджрд╕рд┐рдпреЛрдВ рдЧреБрдирд╛ рддреЗрдЬред
рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдФрд░ рдФрд╕рдд рд░реВрдк рд╕реЗ рд▓реЗрдВ рддреЛ рд╣рдореЗрдВ 350 рдПрдордПрд╕ рдХреА рдЬрдЧрд╣ 8 рдПрдордПрд╕ рдорд┐рд▓реЗред
рд╕реНрдкрд╖реНрдЯ рд▓рд╛рднреЛрдВ рд╕реЗ рд╣рдореЗрдВ рдпрд╣ рднреА рдорд┐рд▓рддрд╛ рд╣реИ:
- рдкрдврд╝рдиреЗ рдХреЗ рднрд╛рд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрдореА,
- рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдХрдореА
- рдФрд╕рдд рдЕрд╡рд░реЛрдзрди рд╕рдордп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдпреЛрдВ рддрдХ рдХрдо рдХрд░рдирд╛
рдЙрддреНрдкрд╛рджрди
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЙрд▓ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдлрд╛рдЗрди-рдЯреНрдпреВрдирд┐рдВрдЧ MS SQL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ LINQ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
рдЗрд╕ рдХрд╛рдо рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдФрд░ рдирд┐рд░рдВрддрд░рддрд╛ рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИ.
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ:
- рдЙрд╕ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдорд╛рди, рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░)
- рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдЪрд┐рдд рдЕрдиреБрдХреНрд░рдордг рдХрд░реЗрдВ
- рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЬреБрдбрд╝рдиреЗ рдХреА рд╢рд░реНрддреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдЕрдЧрд▓реЗ рдЕрдиреБрдХреВрд▓рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ:
- рдЕрдиреБрд░реЛрдз рдХрд╛ рдЖрдзрд╛рд░ рдФрд░ рдореБрдЦреНрдп рдЕрдиреБрд░реЛрдз рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛
- рдПрд╕рдПрд╕рдПрдордПрд╕ рдпрд╛ рдЕрдиреНрдп рдЬреАрдпреВрдЖрдИ рдореЗрдВ SQL рд╕рд░реНрд╡рд░ рд╕реНрд╡рдпрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА (рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛, рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ (рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ))
- рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдзрд╛рд░ рдорд╛рдирдХрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА, рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ LINQ рдХреНрд╡реЗрд░реА
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк LINQ рдХреНрд╡реЗрд░реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗ рдЧрдП рдЗрд╖реНрдЯрддрдо рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рдмрд┐рдВрджреБ 3 рд╕реЗ.
рд╕реНрд╡реАрдХреГрддрд┐рдпрд╛рдБ
рд╕рд╛рдерд┐рдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
рд╕реНрд░реЛрдд: www.habr.com