REST API рдореЗрдВ рд╕реЙрдлреНрдЯ рдбрд┐рд▓реАрдЯ

рдЫрд╡рд┐

рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрдП рд╣реБрдП рдбреЗрдЯрд╛ рд╕реЗ рджрд░реНрдж рдорд╣рд╕реВрд╕ рди рд╣реЛ, рдпрд╣ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде, рд░рд┐рдХреЙрд░реНрдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред рдЗрд╕рд╕реЗ рдзреНрд╡рдЬ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╣рдорд╛рд░реА рдПрдХ REST рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛, рдореИрдВ рдЖрдкрдХреЛ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рд╣рд▓реНрдХреЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдмрд╣реБрдд рдкреБрд░рд╛рдиреА рд╣реИред рдмрд╕ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдХреЗ рд▓рдВрдмреЗ рд╣реЛрд▓реАрд╡рд░реЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдирд░рдо рд╡рд┐рд▓реЛрдкрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдРрд╕реЗ рднреА рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдХреЗ рддрд░реНрдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред рд╡реИрд╕реЗ, рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реНрдХ 2018 рд╕реЗ рдЖрдпрд╛ рдЬрд╡рд╛рдм рд╣реИ: рдпрджрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдЬреАрдбреАрдкреАрдЖрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред

рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдореЗрдВ, рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЙрддреНрд╕рд╛рд╣рдкреВрд░реНрдг рджреГрд╖реНрдЯрд┐рдХреЛрдг


рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдореЗрдВ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ DELETE {рд╕рдВрд╕рд╛рдзрди} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ PATCH рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдПрдХ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдореЗрдВ {рд╕реНрдЯреЗрдЯрд╕: 'рдбрд┐рд▓реАрдЯ'} рдЬреИрд╕реЗ рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред

рдпрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреА рд░рд╛рдп рдЕрд╕рдорд╛рди рд╣реИ: рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрдлреНрд░реАрдХрд╛ рдореЗрдВ рд╡рд┐рд▓реЛрдкрди рднреА рдПрдХ рд╡рд┐рд▓реЛрдкрди рд╣реИред рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджреБрд░реНрдЧрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ HTTP DELETE рд╡рд┐рдзрд┐ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдХреИрд╕реЗ рд╡рд┐рд▓реЛрдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдерд╛ рдХрд┐ рд╣рдЯрд╛рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдмреЗрд╢рдХ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ REST API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рд╕рдВрдШрд░реНрд╖ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЕрднреА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреЛрдЬ рдХрд╛ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдирд┐рдХрд▓рд╛, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдбреИрди рдпреЛрдбрд░ рдХреЗ рдПрдХ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ред рд▓реЗрдЦ рд╡рд┐рднрд┐рдиреНрди HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рднреМрддрд┐рдХ рд╡рд┐рд▓реЛрдкрди рдХреЗ рдмрдЬрд╛рдп, рджреВрд░рд╕реНрде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ DELETE рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрд╕рд╛рдзрди рдХрд╛ рд▓рд┐рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рд╣рдЯрд╛рдП рдЧрдП рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдбрд┐рдЬрд╝рд╛рдЗрди


рд╣рдорд╛рд░реА REST рд╕реЗрд╡рд╛ ASP.NET рд╡реЗрдм API рдкрд░ Entity Framework рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╛рдордХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдХрд░рддрд╛ рд╣реВрдВред

рддреЛ, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХреЙрд▓рдо рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЭрдВрдбреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╣рдЯрд╛рдП рдЧрдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдорд╛рди NULL рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред

ALTER TABLE Documents ADD Deleted datetime NULL, DeletedBy int NULL GO 

рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ DELETE рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЕрдм рдХреЗрд╡рд▓ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, DELETE рд╕рдВрдЧреНрд░рд╣рд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдорд╛рдирдХ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдХрд╛рдп рд▓реМрдЯрд╛рдПрдЧрд╛:

 { "links": { "archive": "documents/{id}/deleted" } } 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ: рд▓рд┐рдВрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рд╕рдВрдЧреНрд░рд╣реАрдд рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╛рдкреНрдд / рд╣рдЯрд╛рдП рдЧрдПрд╣рдЯрд╛рдП рдЧрдП рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рджрд╕реНрддрд╛рд╡реЗрдЬ / {рдЖрдИрдбреА} / рд╣рдЯрд╛рдП рдЧрдПрд╣рдЯрд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
POST рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / {рдЖрдИрдбреА} / рд╣рдЯрд╛рдП рдЧрдПрд╣рдЯрд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ;
рд╢рд░реАрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; 201 рд░рд┐рдЯрд░реНрди рдмрдирд╛рдпрд╛
DELETE рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / {рдЖрдИрдбреА} / рд╣рдЯрд╛рдП рдЧрдПрдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рд╡рд┐рдЪрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ:

 CREATE VIEW DeletedDocuments AS SELECT * FROM Documents WHERE Deleted IS NOT NULL GO CREATE VIEW AvailableDocuments AS SELECT * FROM Documents WHERE Deleted IS NULL GO 

рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрдо рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрдЧреА: рдХреЛрдб рдореЗрдВ рд╢рд░реНрддреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореБрдЭреЗ рдЕрдкрдиреЗ DB рд╕рдВрджрд░реНрдн рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ DbSet рдЧреБрдг рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбрд▓ рдореЗрдВ рджреЛ рд╕рдорд╛рди рдЗрдХрд╛рдЗрдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдИрдПрдл рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреАрдУрд╕реАрдУ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЗрдХрд╛рдИ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рд╡реИрд╕реЗ, рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдЙрдирдХреА рдорджрдж рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрдИ рдбреАрдмреА рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реБрдИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣рдЯрд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд╕рдорд╛рди рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ DbContext рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ DbSet рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдХреЛрдб рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 var availableDocuments = DbContext.Documents.Where(d => d.Deleted == null); var deletedDocuments = DbContext.Documents.Where(d => d.Deleted != null); var allDocuments = DbContext.Documents; 

рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди


рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЙрд░реНрдл тАЛтАЛрд╣реИред рдпрд╣реА рд╣реИ, рдЖрдк рди рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ / {рдЖрдИрдбреА} рдкрде рд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ / {рдЙрдкрдирд╛рдо} рдкрде рд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдкрдирд╛рдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред

рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдЙрдкрдирд╛рдо "рдЕрджреГрд╢реНрдп" рд╣реЛ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдкрд╣рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ GET рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ / рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЙрдкрдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рдереА, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реВрдЪреА рд╕реЗ рдЙрд╕рдХреЗ рдЙрдкрдирд╛рдо рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рд▓реЗрдХрд┐рди рд╡реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрдиреЗ рд░рд╣реЗ! рд╣рдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдкреИрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рд╡рд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, GET рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ / рдЙрдкрдирд╛рдореЛрдВ рд╕реЗ рд▓реМрдЯреА рд╕реВрдЪреА рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ рдлрд┐рд░ рднреА рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░рддреА рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ GET рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ / рд╣рдЯрд╛рдП рдЧрдП / рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ: рд╕реЗрд╡рд╛ рдПрдХ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдореВрд▓реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреВрд░рд╕реНрде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ / рдЙрдкрдирд╛рдореЛрдВ рд╕реЗ рд▓реМрдЯреА рд╕реВрдЪреА рд╕реЗ рдПрдХ рдЙрдкрдирд╛рдо рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рдЙрдиреНрд╣реЗрдВ рд░рд╣рдиреЗ рджреЛ! рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдлреИрд╕рд▓рд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЯреВрдЯреЗ рд╣реБрдП рд▓рд┐рдВрдХ рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЧреНрд░рд╛рд╣рдХ 404 рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдЧрд╛ рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдЙрд░реНрдл тАЛтАЛрджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдЬреБрдбрд╝реЗ рдмрд╛рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рд░рд╣реЗ рдереЗред

рдкреБрд░рд╛рд▓реЗрдЦ рдХреА рд╕рдлрд╛рдИ


рд╕реЙрдлреНрдЯ рдбрд┐рд▓реАрдЯ, рдбреЗрдЯрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░рд┐рдХрд╡рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдФрд░ рдлрд╛рдпрджреЗ рд╣реИрдВред рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрд╢рди рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдФрд░ рдЕрдЧрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рднреА рдЕрдиреНрдп рдЯреЗрдмрд▓реЛрдВ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧрддрд┐рд░реЛрдз рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╢рд╛рд░реАрд░рд┐рдХ рдирд┐рд╖реНрдХрд╛рд╕рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд░рдо рдирд┐рд╖реНрдХрд╛рд╕рди рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИред рдЖрдзрд╛рд░ рдмрдврд╝рдиреЗ рд▓рдЧрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрдзрд╛рд░ рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрджрд┐ рд╣рдо 30 рджрд┐рди рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реАрдзреЗ рдХрд┐рд╕реА рджреВрд░рд╕реНрде рд╡рд╕реНрддреБ рдХреА рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░рд╛рд╣рдХ рд╕рдВрдЧреНрд░рд╣ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдХрд░реАрдм рд╣реИ, рдЙрди рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред

рдореЗрд░реЗ рд╣рд╛рде рдЕрднреА рддрдХ рдЗрд╕ рдХрд╛рд░реНрдп рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдХ рдХрд╛рд░реНрдп рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдПрдХ рд╕рд░рд▓ SQL рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдПрдЧрд╛ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рднреА рдмреЗрдИрдорд╛рдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░реНрдп рдХреЛ рд╕рдорд╛рдкреНрддрд┐ рдХреА рддрд╛рд░реАрдЦ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдлрд┐рд░ рд╕реЗрд╡рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдпрд╣ рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi440886/


All Articles