На преден план - код на първо място, и инициализация на база данни

Въпреки че терминът «DevOps» относително нови и наскоро започнаха да се покриват много по-обширни дейности, по-специално автоматизирано тестване и внедряване, считам, че първата проба на разработчик Автоматизирани операции стара колкото света софтуер. Искам да кажа конкретната възможност за създаване и инициализира базата данни, когато приложението е инсталирано. Много "от софтуер" компании се развиват вертикално интегрирано системи, които след това се продават на различни клиенти и да се адаптират към нуждите им.







Аспекти на такива системи, които могат да се регулират, в зависимост от характеристиките на продукта и областта на бизнеса, но смея да твърдя, че в самия минимум, който и да е вертикално интегрируеми софтуер трябва да бъдат специфични за базата данни за клиентите. Ето защо, трябва да се създаде база данни с таблици и диаграми, необходими в определен контекст и изпълнен с данни "на място".

Не всички необходими задачи винаги е възможно да се автоматизира и да се интегрират в самия продукт. Представете си, например, внос на съществуващите данни. Внесени са данни в Excel файлове или в стари бази данни, е вероятно, че необходимостта да се някак си създаде някои средства за импортиране на данните и да ги зареждат в ново хранилище. Въпреки това, ако заявлението за нивото на достъп на данни, който използвате Код първо Entity Framework 6.x, а след това, най-малкото, да създавате диаграми и таблици в базата данни лесно да се автоматизира и безпроблемно изпълнява първия път, когато стартирате приложението.

В тази статия, аз ще подчертае накратко някои от наличните инструменти за дълго време в първия в кодекс, през призмата на заявлението за различни клиенти (приложни мулти-клиент). По-специално, ще се фокусира върху това как да се създаде и да обсипе базата данни, и как да се определи по програмен си име и низ връзка.

Ние се полагат основите за маси вериги

Да кажем, че имате нов Visual Studio проект, който вече е свързан с NuGet-Service Entity Framework 6.x. Следващата стъпка, която може да бъде необходима, - създаването на библиотека клас за достъп до данни или поне отделна папка в сегашния си проект за запазване на всички файлове, които са по някакъв начин свързани с функционалността на достъп до данните. Според правилата на Entity Framework, трябва да имате един клас DbContext, което представлява точката на влизане в подсистемата за управление на данни заявлението на. Ето един пример за такива клас приложения конкретно на:

Повечето от примерите, които могат да бъдат открити за първи кодекс, въз основа на използването на трайния и постоянен низ връзка, която е посочен в конфигурационния файл или което е ясно предава в рамките на класа. Крайният резултат е, че Code първи създава база данни с помощта на предоставения низ връзка, когато за първи път започнете приложението. Нека да разгледаме по-подробно този аспект.

Клас DbContext поддържа четири инициализация стратегии, изброени в таблица. 1.

Таблица. 1. Стратегия Код Първо в инициализация на базата данни

Тя проверява дали има база данни, и ако той не се намери, създава база данни. Ако не съществува в базата данни, но има несъвместима схема, то хвърля изключение.

Забележка. Това е инициализиране по подразбиране

Той създава базата данни, ако тя не съществува. Ако не съществува в базата данни, но има несъвместима схема, тя премахва и създава ново

Всеки път, когато стартирате приложението, изтриване на съществуващата база данни и да го пресъздава

Клас на собствената си инициализатор е писано да се създаде поведение, не се предлага от някоя от другите инициализират.

Забележка. Вие трябва да използвате тази опция, за да добавите част от съдържанието на майстор-базата данни


Според подразбиране поведение CreateDatabaseIfNotExists, всеки път, когато се създаде контекст клас се проверява дали има постижими и дали базата данни, към който се отнася искането. Ако не, то е създадено. Ако базата данни съществува и е постижимо, но това е несъвместимо с схемата на отворената структура на класовете на автономните области, изключение е хвърлен. За да се отървете от изключение, трябва да редактирате класа на лице, или, по-вероятно, да се промени схемата на база данни или чрез софтуерен интерфейс, или чрез използване на миграцията скрипт базиран на Entity Framework.







Намирам това за идеална възможност, когато приложението достигне нивото на производствената система. Но в етап на развитие, аз предпочитам вариант DropCreateDatabaseIfModelChanges, което всъщност ме предпазва от всяко рутинно, свързани с поддръжка на базата данни: можете просто да настроят класове на автономните области, колкото е необходимо, и Entity Framework ще направи промени в базата данни, когато натиснете F5 следващия път в Visual Studio. За да активирате избрания от Вас стратегия за инициализиране, добавете собствен клас DbContext на конструктора следния ред код:

Имайте предвид, че можете да посочите и инициализиране на базата данни в конфигурационния файл, който може да бъде добра идея, ако имате намерение да ползвате различна стратегия за производство на околната среда и развитието.

За да обобщим, Code Първо ви позволява да пишете приложение, което автоматично създава всички таблици на базата от данни, когато за първи път започнете. С други думи, вие трябва само да копирате файлове и след това пуснете приложението. Все пак, това поведение работи най-добре, ако системата е предназначена за един клиент. Когато се създаде система за няколко клиента, най-доброто нещо, което можете да направите - използвайте помощната програма за настройка.

Една от причините за по-малко по-различен подход е, че може да се наложи друга база данни за именуване, например, искате да добавите към името на префикса по спецификации на клиента. Фиг. 2 показва скелет на командния ред помощна програма. Програмата е на специфична за клиента префикс от командния ред, правилно формати името на базата данни, и след това да се отнася до производно на DbContext клас, който пресъздава в базата данни и да го запълва с подходящи първоначални данни.

Фиг. 2. специфични за име на база данни на клиента

Първоначално пълнене на базата данни

Всяка система, предназначена да се адаптират към нуждите на клиентите в един набор от бизнес зона трябва да има определен брой маси, предназначени да спасят възможности и предпочитания, различни за всеки клиент. Тази информация трябва да бъде предоставена по някакъв начин по време на процеса на инсталиране на софтуера. В реални условия, за началната част на базата данни е обща за всички растения, но друга част - за определен клиент. Частта, която зависи от данните на клиента, обикновено внасят от външни източници и изисква специализирани процедури като скрипт или компилиран код. В някои ситуации може да е подходящо дори някои механизъм вграден зависимости да обобщават вноса на капиталовата структура в завода програма, която инициализира базата данни. Въпреки това, за статична база данни съдържание, кодът първи предлага специализирани услуги.

собствени инициализатори

За да поставите данните в базата данни по време на инициализация, трябва да създадете своя собствена база данни инициализатор, както е описано в таблица. 1. собствена инициализатор (обичай инициализатор) - е клас, получен от един от предварително инициализират като DropCreateDatabaseIfModelChanges. Единственият строгите изисквания за този клас - Замяна на семена:

Изпълнението на семена от вас метод изпълнят всяка код, който попълва таблица на база данни и да ги покани с помощта на предоставения DbContext. Това е всичко.

Ако планирате заявление за няколко клиента, определението за собствен инициализатор ще бъде стъпка в правилната посока, тъй като това ще ви даде една точка, където ще се определи първоначалната форма на база данни за всеки отделен клиент. Това инициализатор е обикновен C # -class, така че той може да поддържа инструменти вградени зависимости да се свързва с определени части от логиката, че вносът на данни от там, където те са.

Не на последно място, базата данни могат да бъдат разглобени инициализатори до база данни инсталация останаха напълно отделна операция може дори да се контролира от друго или IT- DevOps-група. За да съобщите за инфраструктура Код Първо игнорира всички инициализират, вие трябва да сложите в конструктор DbContext класа следния код:

Например, тя е безопасна опция за използване, когато освободите актуализация на съществуващите системи. Деактивирането инициализатор гарантира, че не сте при никакви обстоятелства няма да губят съществуващите данни.

заключение

В крайна сметка Код Първо ви позволява да записвате multitenantnye приложения и приложения за множество клиенти, така че ако го направи, особено за най-известните конфигурация и клиента. Необходим само някои познания за низ задача връзка и процеса на инициализация. Основните принципи Entity Framework Основни остават същите, въпреки че подробности за това как те работят, са се променили. По-специално, една нова класа се появи DbContext отменя OnConfiguring, чрез която можете да се свърже с избрания доставчик контекст база данни и преминава самоличността и другите елементи.

Изразявам своята благодарност за преразглеждане на статията Microsoft експертът Андреа салтарело (Andrea салтарело).