рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХреИрд╕реЗ рд░реЛрд▓ рдХрд░реЗрдВ

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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрдХрдиреАрдХреА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрд╡рдд: рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдбреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреИрд╕реЗ: ASP.NET MVC + Azure SQL + Entity рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рдлрд░реНрд╕реНрдЯ рдореЛрдб рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Azure рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ред , рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рддреИрдирд╛рддреА Azure DevOps (рдкреВрд░реНрд╡ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рд╕рд░реНрд╡рд┐рд╕реЗрдЬ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред



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

рд╣рдорд╛рд░реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рдХрд╛рд░рдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:

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

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



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

рдХреНрдпрд╛ рдХрд░реЗрдВ?


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

update-database -script 

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

рдФрд░ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреАрдврд╝реА рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдЧрд╛ред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рдЗрдЧреНрд░реЗрдЯ ..exe рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ Entity Framework рд╕рдВрд╕реНрдХрд░рдг 6.2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдХрд▓реНрдк рдЕрдкреНрд░реИрд▓ 2017 рдореЗрдВ рд╣реА рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 migrate.exe Context.dll /connectionString="Data Source=localhost;Initial Catalog=myDB;User Id=sa;Password=myPassword;" /connectionProviderName="System.Data.SqlClient" /sc /startUpDirectory="c:\projects\MyProject\bin\Release" /verbose 

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

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

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

  public class MigrationScriptBuilder : SqlServerMigrationSqlGenerator { public override IEnumerable<MigrationStatement> Generate(IEnumerable<MigrationOperation> migrationOperations, string providerManifestToken) { var statements = base.Generate(migrationOperations, providerManifestToken); var result = new List<MigrationStatement>(); result.Add(new MigrationStatement { Sql = "SET QUOTED_IDENTIFIER ON;" }); foreach (var item in statements) { item.BatchTerminator = "GO"; result.Add(item); } return result; } } 

рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ:

  public Configuration() { SetSqlGenerator("System.Data.SqlClient", new MigrationScriptBuilder()); тАж. } 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрдерди рдХреЗ рдмреАрдЪ GO рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ SET QUOTED_IDENTIFIER ON рд╣реЛрдЧрд╛;

рд╣реБрд░реНрд░реЗ, рддреИрдпрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, Azure DevOps (VSTS / TFS) рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 param ( [string] [Parameter(Mandatory=$true)] $dbserver, [string] [Parameter(Mandatory=$true)] $dbname, [string] [Parameter(Mandatory=$true)] $dbserverlogin, [string] [Parameter(Mandatory=$true)] $dbserverpassword, [string] [Parameter(Mandatory=$true)] $rootPath, [string] [Parameter(Mandatory=$true)] $buildAliasName, [string] [Parameter(Mandatory=$true)] $contextFilesLocation, ) Write-Host "Generating migration script..." $fullpath="$rootPath\$buildAliasName\$contextFilesLocation" Write-Host $fullpath & "$fullpath\migrate.exe" Context.dll /connectionProviderName="System.Data.SqlClient" /connectionString="Server=tcp:$dbserver.database.windows.net,1433;Initial Catalog=$dbname;Persist Security Info=False;User ID=$dbserverlogin;Password=$dbserverpassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" /startUpDirectory=$fullpath /verbose /scriptFile=1.SQL Write-Host "Running migration script..." & "SQLCMD" -S "$dbserver.database.windows.net" -U $dbserverlogin@$dbserver -P $dbserverpassword -d $dbname -i 1.SQL Write-Host "====Finished with migration script====" 

рдФрд░ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдЗрдХрд╛рдИ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдмреНрд▓реЙрдХ рдФрд░ рдЗрд╕рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИрдВ:



PowerShell рд╕реЗрдЯрдЕрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ <YourProject> /packages/EntityFramework.6.2.0/tools/ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯред Exe рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ рдФрд░ рдХреЙрдкреА рдСрд▓рд╡реЗрдЬ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрдкреА рд╣реЛ рдЬрд╛рдП рдЬрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЖрдк рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХреЗрдВред Azure DevOps рд░рд┐рд▓реАрдЬрд╝ред

рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ ред рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреА Azure App Service рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп WebJob рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Migrate.exe рдЬреЛрдбрд╝рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рдо рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рд╡реЗрдмрдЬреЙрдм рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдЬрд╝реНрдпреЛрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмреЗрд╡рдХреВрдлреА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдПрдХреНрд╕рдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ WebJob рдиреЗ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдмрд╛рдж рдореЗрдВ migrate.exe рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рд╣реИ (рдФрд░ рд╣рдордиреЗ рдХрд┐рдпрд╛), рддреЛ рдпрд╣ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрдЬрд╛рдп migrate.exe рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ!

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╕рд╛рдзрд╛рд░рдг рдмрд╛рдд рдпрд╣ рд╣реИ: рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рдВрд╕реНрдХрд░рдг рдЪреЗрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛ, рддреЛ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкрд▓рд╛рдпрди рдЧреИрд░-рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рджреЛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ Web.config рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

  <entityFramework> <contexts> <context type="<full namespace for your DataContext class>, MyAssembly" disableDatabaseInitialization="true"/> </contexts> </entityFramework> 

рдЬрд╣рд╛рдБ full namespace for your DataContext class рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдирд╛рдорд╕реНрдерд╛рди DbContext рд╕реЗ рдЖрдкрдХреЗ рд╡рдВрд╢рдЬ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рд╕реНрдерд╛рди рд╣реИ, рдФрд░ MyAssembly рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдХрд╛ рд╕рдВрджрд░реНрдн рдирд┐рд╣рд┐рдд рд╣реИред

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

  <system.webServer> <applicationInitialization doAppInitAfterRestart="true"> <add initializationPage="/" hostName="" /> </applicationInitialization> </system.webServer> 

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

рд▓реЗрдХрд┐рди .NET рдХреЛрд░ рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


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

рдЦреИрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЪрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВ:



рд╣рдо рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:



PowerShell рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВ рдЬреЛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди (рдКрдкрд░ рд╡рд░реНрдгрд┐рдд) рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдХрд░реЗрдЧрд╛ред рдирддреАрдЬрддрди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИрдВ (рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд▓рд╛рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреАрдПрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ):



рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд░рд┐рд▓реАрдЬрд╝ рдЪрд░рдг рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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

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


All Articles