рдИрдПрдл рдХреЛрд░ + рдУрд░реЗрдХрд▓: рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд╕реБрд╕реНрдкрд╖реНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдП



рдЖрдорддреМрд░ рдкрд░, EF рдХреЛрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ MS SQL, рдПрдХ рдЕрдиреНрдп Microsoft рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдПрдХ рд╣рдардзрд░реНрдорд┐рддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CUSTIS рдореЗрдВ рд╣рдо C # рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Oracle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдИрдПрдл рдХреЛрд░ рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рдкреНрд░рд╡рд╛рд╕рди рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдУрд░реЗрдХрд▓ рдФрд░ рдХрдИ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕, рдЬреИрд╕реЗ рдХрд┐ MySQL, рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ DDL рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдкреНрд░рд╡рд╛рд╕ рдмреАрдЪ рдореЗрдВ рдХрд╣реАрдВ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рдмрд┐рдирд╛ рдИрдПрдл рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдмреЗрд░реЛрдЬрдЧрд╛рд░ рдкрд▓рд╛рдпрди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?

рдкреГрд╖реНрдарднреВрдорд┐


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

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкреИрдЪ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджреЛ рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ:

  1. рддрд╛рд▓рд┐рдХрд╛ рдП рдмрдирд╛рдПрдБред
  2. рдЯреЗрдмрд▓ рдмреА рдмрдирд╛рдирд╛ред

рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рддрд╛рд▓рд┐рдХрд╛ рдП рдУрд░реЗрдХрд▓ рдореЗрдВ рдмрдиреА рд░рд╣реЗрдЧреАред рдкреИрдЪ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдП рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддреБрд░рдВрдд рджреВрд╕рд░реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛ред

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

рд╣рдо рдкреИрдЪ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддреИрдпрд╛рд░ рддрдВрддреНрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред 2019 рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕ рдкрд░ рд╣рдордиреЗ рдПрдХ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рддрдВрддреНрд░ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдкрд▓рд╛рдпрди рдХреА рдЧреИрд░-рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдереАред

рдореБрд╕реАрдмрдд


рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ, рдбреАрдбреАрдПрд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯреНрд╕ рдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХрд▓ рдХрдВрдкрд╛рдЙрдВрдб рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реБрдХрд╛рд╡рдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Oracle DDL рдиреЙрди-рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рд╣реЛ рдЬрд╛рдПрдЧреАред

рдкреИрдЪ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ: рддрд╛рд▓рд┐рдХрд╛ рдП рдФрд░ рдмреА рдмрдирд╛рдирд╛ред рдпрджрд┐ рдкреНрд░рд╡рд╛рд╕реА рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рдж рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдУрд░реЗрдХрд▓ рдЯреЗрдмрд▓ рдП рдореЗрдВ рд░рд╣реЗрдЧрд╛ред рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ - рдСрдкрд░реЗрдЯрд░ CREATE TABLEрдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХрд┐ рдП рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рд░реЛрд▓ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛: рдИрдПрдл рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛, рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВред рдИрдПрдл рдХреЛрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрджрд┐ рдкреНрд░рд╡рд╛рд╕ рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдлреЗрд╕рд▓рд╛


рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдУрд░реЗрдХрд▓ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓реЗред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдИрдПрдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреИрдЪ рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рдФрд░  рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред StackOverflow рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореИрдВ рдЕрдкрдиреЗ IMigrationsSqlGenerator рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ ред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ EF рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ SQL рдХреЛрдб рдХреЛ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

рдкреИрдХреЗрдЬ Oracle.EntityFrameworkCore рдореЗрдВ OracleMigrationsSqlGenerator, IMigrationsSqlGenerator рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛:

ALTER TABLE MY_TABLE ADD (MY_COLUMN DATE)

рдлрд┐рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ OracleMigrationsSqlGenerator рдСрдкрд░реЗрд╢рдВрд╕ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрд╣ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдЖрджрд░реНрд╢ рдкреНрд░рд╡рд╛рд╕реА рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ CUSTIS.OracleIdempotentSqlGenerator рдЖрдпрд╛ ред

рдСрдкрд░реЗрд╢рди рдИрдПрдл рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкреНрд░рд╡рд╛рд╕реА рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрд▓рдо рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

DECLARE
    i NUMBER;
BEGIN
    SELECT COUNT(*) INTO i
    FROM user_tab_columns
    WHERE table_name = UPPER('MY_TABLE') AND column_name = UPPER('MY_COLUMN');
    IF I != 1 THEN
        EXECUTE IMMEDIATE 'ALTER TABLE MY_TABLE ADD (MY_COLUMN DATE)';  
    END IF;       
END;

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП


рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдЖрдкрдХреЛ рдЗрд╕реЗ IMigrationsSqlGeneratorрд╕рд╣реА рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :

public class MyDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.ReplaceService<IMigrationsSqlGenerator, IdempotentSqlGenerator>();
    }
}

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдИрдПрдл рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдФрд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ :

dotnet ef migrations add v1.0.1
dotnet ef database update

CUSTIS.OracleIdempotentSqlGenerator рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг MySQL, MariaDB, Teradata, AmazonAurora рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдЬрд┐рд╕рдореЗрдВ DDL рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдирд╣реАрдВ рд╣реИ, рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдЬреЗрдирд░реЗрдЯрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрджрд░реНрдн


рдкреИрдХреЗрдЬ GitHub рдкрд░ NuGet рд╕реНрд░реЛрддреЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ

All Articles