рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд╛рдареНрдпрдХреНрд░рдоред Conc.NET ASP.NET MVC рдореЗрдВ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде

рдпрд╣ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ ASP.NET MVC 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╣реИред рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдкрд░ рдкрд╣рд▓рд╛ рдЕрдзреНрдпрд╛рдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдкрд┐рдЫрд▓реЗ рдкрд╛рдареЛрдВ рдореЗрдВ, рдЖрдкрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрд╕ рдкрд╛рда рдореЗрдВ, рд╣рдо рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЖрдк рд╡рд┐рднрд╛рдЧ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рд╡рд┐рднрд╛рдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рднреА рдирд┐рд░реНрдгрд╛рдпрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗред рдкрд░рд┐рдгрд╛рдо рдЪрд┐рддреНрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред

clip_image001

clip_image002

рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рд╕рдВрдШрд░реНрд╖

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

рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧрд░реЛрдз (рд▓реЙрдХрд┐рдВрдЧ)

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

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

рдЖрд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧрддрд┐

рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЖрд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧреЛрд╖реНрдареА рд╣реИ ред рдЖрд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдБрдЪ рд╕рдВрдШрд░реНрд╖ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЙрди рдиреЗ рдбрд┐рдкрд╛рд░реНрдЯрдореЗрдВрдЯреНрд╕ рдПрдбрд┐рдЯ рдкреЗрдЬ рдХреЛ рдЦреЛрд▓рд╛, рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдмрдЬрдЯ рдореВрд▓реНрдп рдХреЛ $ 350,000.00 рд╕реЗ $ 100,000.00 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред

clip_image003

рдЬреЙрди рд╕рд╣реЗрдЬреЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЬреЗрди рдПрдХ рд╣реА рдкреГрд╖реНрда рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрдн рджрд┐рдирд╛рдВрдХ рдорд╛рди рдХреЛ 1/1/1999 рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

clip_image004

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

рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдШрд░реНрд╖ рдХреЛ рдИрдПрдл рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЧрдП рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХрдХреЙрдирдПрдЬреЗрдВрд╕реА рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдХрд░ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдХрдм рдлреЗрдВрдХрдирд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдИрдПрдл рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрдШрд░реНрд╖ рдХрдм рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЗрд╕ рд╕реНрддрдВрдн рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рддрд╛рд░реАрдЦ рдпрд╛ рд╕рдордп рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореВрд▓реНрдп рд╣рд░ рдмрд╛рд░ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЕрдВрдХ рдмрдврд╝рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ (рд╕рдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ SQL рд╕рд░реНрд╡рд░ рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд░реЛрд╡рд░рд╡рд░реНрдЬрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдЕрдкрдбреЗрдЯ рдпрд╛ рдбрд┐рд▓реАрдЯ рдХреНрд╡реЗрд░реАрдЬрд╝ рдореЗрдВ, рдЬрд╣рд╛рдБ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ "рдЯреНрд░реИрдХрд┐рдВрдЧ" рдХреЙрд▓рдо рдХрд╛ рдореВрд▓ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдЕрдкрдбреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЙрд▓рдо рдХрд╛ рдореВрд▓реНрдп рдореВрд▓ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдФрд░ рдбрд┐рд▓реАрдЯ рдХреНрд╡реЗрд░реАрдЬрд╝ рдЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдИрдПрдл рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдкрдбреЗрдЯ рдпрд╛ рдбрд┐рд▓реАрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рд╕рдорд╡рд░реНрддреА рдПрдХреНрд╕реЗрд╕ рд╕рдВрдШрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдИрдПрдл рдПрдХ рд╕рдВрдШрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд╡рд░реНрддреА рдХреЙрд▓рдо рд╡рд┐рдХрд▓реНрдк рдЬрд┐рддрдирд╛ рд╣реА рдкреНрд░рднрд╛рд╡реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдХрдИ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рддреЛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдерди рдФрд░ рдбреЗрдЯрд╛ рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкрд╛рда рдореЗрдВ, рд╣рдо рд╡рд┐рднрд╛рдЧ рдЗрдХрд╛рдИ рдореЗрдВ рдПрдХ "рдЯреНрд░реИрдХрд┐рдВрдЧ" рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдПрдХ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред

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

рдбрд┐рдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдПрдВрдЯрд┐рдЯреА рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдирд╛

рдореЙрдбрд▓ \ рд╡рд┐рднрд╛рдЧ рдореЗрдВ ред рд╕реАрдПрд╕ рдПрдХ "рдЯреНрд░реИрдХрд┐рдВрдЧ" рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВ:

[Timestamp] public Byte[] Timestamp { get; set; } 

рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрд▓рдо рдЕрдкрдбреЗрдЯ рдФрд░ рдбрд┐рд▓реАрдЯ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рд░реНрдорд╛рдг

рдПрдХ рд╡рд┐рднрд╛рдЧ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдПрдБ:

clip_image005

рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ \ DepartmentController.cs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝реЗрдВ:

System.Data.Entity.Infrastructure рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;

рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ (рдЪрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ) рдореЗрдВ LastName рдХреЛ FullName рдореЗрдВ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдЕрдВрддрд┐рдо рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рдкреВрд░рд╛ рдирд╛рдо рд╕рдВрдХрд╛рдп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреЛрдВ рдХреА рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред

HttpPost рдПрдбрд┐рдЯ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

 [HttpPost] public ActionResult Edit(Department department) { try { if (ModelState.IsValid) { db.Entry(department).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } } catch (DbUpdateConcurrencyException ex) { var entry = ex.Entries.Single(); var databaseValues = (Department)entry.GetDatabaseValues().ToObject(); var clientValues = (Department)entry.Entity; if (databaseValues.Name != clientValues.Name) ModelState.AddModelError("Name", "Current value: " + databaseValues.Name); if (databaseValues.Budget != clientValues.Budget) ModelState.AddModelError("Budget", "Current value: " + String.Format("{0:c}", databaseValues.Budget)); if (databaseValues.StartDate != clientValues.StartDate) ModelState.AddModelError("StartDate", "Current value: " + String.Format("{0:d}", databaseValues.StartDate)); if (databaseValues.InstructorID != clientValues.InstructorID) ModelState.AddModelError("InstructorID", "Current value: " + db.Instructors.Find(databaseValues.InstructorID).FullName); ModelState.AddModelError(string.Empty, "The record you attempted to edit " + "was modified by another user after you got the original value. The " + "edit operation was canceled and the current values in the database " + "have been displayed. If you still want to edit this record, click " + "the Save button again. Otherwise click the Back to List hyperlink."); department.Timestamp = databaseValues.Timestamp; } catch (DataException) { //Log the error (add a variable name after Exception) ModelState.AddModelError(string.Empty, "Unable to save changes. Try again, and if the problem persists contact your system administrator."); } ViewBag.InstructorID = new SelectList(db.Instructors, "InstructorID", "FullName", department.InstructorID); return View(department); } 

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

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

 var entry = ex.Entries.Single(); var databaseValues = (Department)entry.GetDatabaseValues().ToObject(); var clientValues = (Department)entry.Entity; 

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

 if (databaseValues.Name != currentValues.Name) ModelState.AddModelError("Name", "Current value: " + databaseValues.Name); // ... 

рддреНрд░реБрдЯрд┐ рдкрд░, рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

 ModelState.AddModelError(string.Empty, "The record you attempted to edit " + "was modified by another user after you got the original value. The" + "edit operation was canceled and the current values in the database " + "have been displayed. If you still want to edit this record, click " + "the Save button again. Otherwise click the Back to List hyperlink."); 

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

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

Html .HiddenFor (рдореЙрдбрд▓ => model.Timestamp)

рджреГрд╢реНрдп \ рд╡рд┐рднрд╛рдЧ \ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ ред cshtml рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдФрд░ рдкреЗрдЬ рд╣реЗрдбрд░ рдФрд░ рдХреЙрд▓рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП:

 @model IEnumerable<ContosoUniversity.Models.Department> @{ ViewBag.Title = "Departments"; } <h2>Departments</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th></th> <th>Name</th> <th>Budget</th> <th>Start Date</th> <th>Administrator</th> </tr> @foreach (var item in Model) { <tr> <td> @Html.ActionLink("Edit", "Edit", new { id=item.DepartmentID }) | @Html.ActionLink("Details", "Details", new { id=item.DepartmentID }) | @Html.ActionLink("Delete", "Delete", new { id=item.DepartmentID }) </td> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.Budget) </td> <td> @Html.DisplayFor(modelItem => item.StartDate) </td> <td> @Html.DisplayFor(modelItem => item.Administrator.FullName) </td> </tr> } </table> 

рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдХреВрд▓рди рдЖрд╢рд╛рд╡рд╛рджреА


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╡рд┐рднрд╛рдЧреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

clip_image001[1]

рдПрдбрд┐рдЯ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдФрд░ рдПрдбрд┐рдЯ рдкреЗрдЬ рдЦреЛрд▓реЗрдВред рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕рдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

clip_image006

рдкрд╣рд▓реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдмрджрд▓реЗрдВ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред

clip_image007

рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

clip_image008

рджреВрд╕рд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рд╣реА рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрд▓рдЧ рдорд╛рди рдореЗрдВ рдмрджрд▓реЗрдВред

clip_image009

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ :

clip_image002[1]

рдлрд┐рд░ рд╕реЗ рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рджреВрд╕рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред

clip_image010

рдбрд┐рд▓реАрдЯ рдкреЗрдЬ рдЬреЛрдбрд╝рдирд╛

рдбрд┐рд▓реАрдЯ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕рд╛рдордпрд┐рдХ рдореБрджреНрджреЛрдВ рдХреЛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдкреБрд╖реНрдЯрд┐ рд╡рд┐рдВрдбреЛ HttpGet Delete рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рджреГрд╢реНрдп рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рдлрд╝реАрд▓реНрдб рдореЗрдВ рдореВрд▓ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдорд╛рди HttpPost Delete рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд▓реЛрдкрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред рдЬрдм EF рдПрдХ Delete рдЕрдиреБрд░реЛрдз рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдореВрд▓ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╡рд░рдг рдХрд╣рд╛рдБ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HttpGet рд╣рдЯрд╛рдПрдБ рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред

рд╡рд┐рднрд╛рдЧрдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ ред рд╕реАрдПрд╕ HttpGet рд╣рдЯрд╛рдПрдБ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

 public ActionResult Delete(int id, bool? concurrencyError) { if (concurrencyError.GetValueOrDefault()) { ViewBag.ConcurrencyErrorMessage = "The record you attempted to delete " + "was modified by another user after you got the original values. " + "The delete operation was canceled and the current values in the " + "database have been displayed. If you still want to delete this " + "record, click the Delete button again. Otherwise " + "click the Back to List hyperlink."; } Department department = db.Departments.Find(id); return View(department); } 

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

HttpPost Delete (DeleteConfirmed) рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:

 [HttpPost, ActionName("Delete")] public ActionResult DeleteConfirmed(Department department) { try { db.Entry(department).State = EntityState.Deleted; db.SaveChanges(); return RedirectToAction("Index"); } catch (DbUpdateConcurrencyException) { return RedirectToAction("Delete", new System.Web.Routing.RouteValueDictionary { { "concurrencyError", true } }); } catch (DataException) { //Log the error (add a variable name after Exception) ModelState.AddModelError(string.Empty, "Unable to save changes. Try again, and if the problem persists contact your system administrator."); return View(department); } } 

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ:

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ActionResult DeleteConfirmed (int рдЖрдИрдбреА)


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

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рдбрд╝рд╛рдИред рд╡рд┐рднрд╛рдЧ рд╣рдЯрд╛рдПрдВ (рд╡рд┐рднрд╛рдЧ рд╡рд┐рднрд╛рдЧ)

рдпрджрд┐ рдХреЛрдИ рд╕рдВрдЧрд░реЛрдз рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЛрдб рдкреБрд╖реНрдЯрд┐ рдкреГрд╖реНрда рдХреЛ рддреНрд░реБрдЯрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рджреГрд╢реНрдп \ рд╡рд┐рднрд╛рдЧ \ рд╣рдЯрд╛рдПрдБ рдореЗрдВ ред cshtml рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реВрдкрдг рдФрд░ рдлрд╝реАрд▓реНрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

 @model ContosoUniversity.Models.Department @{ ViewBag.Title = "Delete"; } <h2>Delete</h2> <p class="error">@ViewBag.ConcurrencyErrorMessage</p> <h3>Are you sure you want to delete this?</h3> <fieldset> <legend>Department</legend> <div class="display-label"> @Html.LabelFor(model => model.Name) </div> <div class="display-field"> @Html.DisplayFor(model => model.Name) </div> <div class="display-label"> @Html.LabelFor(model => model.Budget) </div> <div class="display-field"> @Html.DisplayFor(model => model.Budget) </div> <div class="display-label"> @Html.LabelFor(model => model.StartDate) </div> <div class="display-field"> @Html.DisplayFor(model => model.StartDate) </div> <div class="display-label"> @Html.LabelFor(model => model.InstructorID) </div> <div class="display-field"> @Html.DisplayFor(model => model.Administrator.FullName) </div> </fieldset> @using (Html.BeginForm()) { @Html.HiddenFor(model => model.DepartmentID) @Html.HiddenFor(model => model.Timestamp) <p> <input type="submit" value="Delete" /> | @Html.ActionLink("Back to List", "Index") </p> } 

рдпрд╣ рдХреЛрдб h2 рдФрд░ h3 рд╣реЗрдбрд░ рдХреЗ рдмреАрдЪ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

<p class = "error"> @ ViewBag.ConcurrencyErrorMessage </ p>

рдпрд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ FullName рдХреЗ рд╕рд╛рде LastName рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ:

 <div class="display-label"> @Html.LabelFor(model => model.InstructorID) </div> <div class="display-field"> @Html.DisplayFor(model => model.Administrator.FullName) </div> 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдбрд┐рдкрд╛рд░реНрдЯрдореЗрдВрдЯрдЖрдИрдбреА рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд▓рд┐рдП рдЫрд┐рдкреЗ рд╣реБрдП рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ:

 @Html.HiddenFor(model => model.DepartmentID) @Html.HiddenFor(model => model.Timestamp) 

рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдбрд┐рдкрд╛рд░реНрдЯрдореЗрдВрдЯреНрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдЦреЛрд▓реЗрдВред

рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдХрд┐рд╕реА рдПрдХ рдорд╛рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрджрд▓реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ , рд▓реЗрдХрд┐рди рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рди рдХрд░реЗрдВ :

clip_image003[1]

рджреВрд╕рд░реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╕рдорд╛рди рдлреИрдХрд▓реНрдЯреА рдкрд░ рдбрд┐рд▓реАрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

clip_image011

рдкрд╣рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реЗрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рдПрдЧреАред

clip_image012

рдЕрдм рджреВрд╕рд░реА рдмреНрд░рд╛рдЙрдЬрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

clip_image013

рдпрджрд┐ рдЖрдк рдлрд┐рд░ рд╕реЗ рд╣рдЯрд╛рдПрдВ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрдбреЗрдХреНрд╕ рдкреЗрдЬ рдЗрд╕ рдкреБрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдЦреБрд▓реЗрдЧрд╛ рдХрд┐ рд╕рдВрдХрд╛рдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИред

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

рдзрдиреНрдпрд╡рд╛рдж

рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ Belotserkovsky рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles