ПредишенСледващото

В предишна статия от поредицата, "Какво е едно име" Доказано е, че тя представлява DurandalJS и как да го използвате. В тази статия, ние ще работим с EntityFramework: създаване на база данни, въз основа на Кодекса Първи; създаване на класове на автономните области, да конфигурирате SQL-връзка.

Първи стъпки

Преди да започнете да използвате BreezeJS трябва да изготви база данни. Това е, което ние ще направим в тази статия. Но първо, че има смисъл да се показва от база данни "пропуска" да ме в една папка, наречена "може да бъде полезен", така че можете да сте наясно какво е заложено на карта.

схема на база данни

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

Какво е едно име 3 на база данни за спа или код първо да entityframework

Базата данни имам, но го използвам, защото не трябва по предназначение. Ние ще създадем нова база на принципа на "Кодекс за първи път", тоест, ние ще създадем класовете и базата данни ще EntityFramework за нас. След това се преместих от моя архив на базата данни към новата база данни, само данни.

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

Създаване на база данни, въз основа на "Кодекс за първи път"

Първо, трябва класове, тъй като "Кодекс" означава нищо повече от "код", което означава, класове. Отдавна съм стигнал до това, че всичко трябва да бъде на негово място, както и че този път не мога да направя друго. Аз използва за поставяне на класовете на модела в отделен проект, разтвор (разтвор).

Какво е едно име 3 на база данни за спа или код първо да entityframework

Създаване на нов проект:

Какво е едно име 3 на база данни за спа или код първо да entityframework

Модели за Code First

Сега, създаде първата група, наречени LetterInfo ... Не, нека да разгледаме някои от принципите на ООП, и по-специално, една от основните - "Наследството". Създаване на клас, който ще бъде основата за следващите две. Класът се нарича ModelBase:

Направихме го, защото всеки един от следните два класа: LetterInfo NameInfo и ще съдържа същите свойства:

В клас NameInfo няма нито един имот (на базата на диаграма на примерна база данни), която не присъства в базовия клас, добавете това:

Ето и готов архитектурен прилагане модел.

Атрибути, класове, свойства, модели

По-скоро начало, сега трябва да се прилага по отношение на редица атрибути свойства и класове за да покаже, EntityFramework някои параметри при генерирането на таблиците в базата данни. За да започнете работа в базовия клас:

Умение Key посочи EntityFramework, че това поле е PrimaryKey (първичен ключ) за класове (маса), за да се използва като базов клас наследник.

Като цяло, това е необходимо да се направи уточнение. В действителност EntityFramework много "умни" рамка. Ако не зададете ключов атрибут на тази собственост, EntityFramework още маркирате тази област, както PrimaryKey. това е да се направи първичен ключ. EntityFramework платформа се основава на факта, че всеки обект има ключова стойност, която се използва за проследяване на лица. Едно от споразуменията, на което се позовава Първи кодекс. Тя се определя от това как ключова имот във всеки клас Code First. Това споразумение, което търси Id имот или имот, който съчетава "клас име" и Id. например LetterId. Имоти карти към първичния ключ колона в базата данни.

В нашия случай, имотът Id е във всеки един от класовете на наследниците. Аз все още винаги се поставя този атрибут, повече по навик. Следващата обява идва Display атрибут. Този атрибут не е толкова много за EntityFramework, както и за форми и ASP.NET MVC за четливост в бъдеще. Използването маркиране Razor:

Формата показва стойността на имота поради DisplayAttribute атрибут. Аз също го кажем почти винаги по навик, тъй като е възможно да се уточни именуването на полета в руски, въпреки че в нашата молба, този атрибут е безполезна, тъй като предоставянето на форма не произвежда Razor. и DurandalJS KnockoutJS означава.

Следващият имота - "Name". Но в нашия случай, този имот се използва различна конфигурация атрибути за всеки един от наследниците. Например, този хотел има име (DisplayAttribute) "писмо" в LetterInfo на класа, в NameInfo клас - "Име".

Създаване на клас на метаданни в клас наследници и предефиниране на метаданните на базовия клас в тях. Първа сделка с LetterInfo клас:

За да започнете, погледнете линия 4, когато класът се определя LetterInfoMetadata метаданни. Моля, имайте предвид, че името на свойствата на едно и също име разполага в ModelBase базов клас. Умение Посочете ние вече е описано, следващата - Задължително (линия 10). Този атрибут определя EntityFramework отбелязване на имота, както се изисква, това е, за влизане в таблицата няма да падне, докато всички задължителни полета са попълнени. Допълнителна StringLength атрибут (линия 11), което определя лимит от дължината на низа в таблицата с SQL. За съдържание имот създава свои атрибути.

На следващия клас NameInfo:

Отклонение: можете да се аргументира защо такава сложност при формирането на предприятието. Аз няма да се отрече, че не е най-лесният начин да се приложи. Като алтернативно решение, то е много по-лесно би било да се създаде два класа, а всеки приложат свои собствени имоти с различни атрибути. Резюметата в подкрепа на извършената работа:

  • С помощта на принципите и правилата на ООП (Обектно ориентирано програмиране) е добър тон за всеки програмист;
  • С по-нататъшното развитие на проекта се променя основните свойства могат да се извършват в центъра;
  • Във всеки случай, програмата трябва да е правилно и да развият добри навици.

Друг вид на атрибути, които не се прилага за имоти и класове. Един от представителите на тези атрибути е TableAttribute атрибут. Поставянето на този атрибут към клас ефект, тя ви позволява да определите име за EntityFramework маса за този клас.

Например, за този клас LetterInfo задам този атрибут:

И, следователно, на масата, която ще EntityFramework за мен, в който да се съхранява имената на буквите, ще се нарича "Писма". вместо "LetterInfo", ако не бях поставил този атрибут.

Направете същото и за втория субект:

С тези атрибути EntityFramework създаде за мен две таблици с имената на писма и имена. Това е време да се запознаят с EntityFramework близо.

DbContext или познаване EntityFramework

Какво е едно име 3 на база данни за спа или код първо да entityframework

Първата стъпка е да инсталирате nuget-пакет, който ще ви позволи да започнат да работят с EntityFramework. Изберете проект InfoNames.Data, щракнете с десния бутон Управление Nuget пакети. В пакетния мениджър, изберете левия съхранение "Microsoft и NET", EntityFramework-пакет ще бъде на първо място (поради честотата на сваляне), ако не е на първо място, въведете EntityFramework в търсене на колоната до точната информация.

Какво е едно име 3 на база данни за спа или код първо да entityframework

Кноп върху Инсталирай.

Следващата стъпка е да се добави линк към проекта InfoNames.Models. отново Изберете проект меню InfoNames.Data десния повикване и преминете към Добави -> Refferences:

Какво е едно име 3 на база данни за спа или код първо да entityframework

Забележка чавка проект и натиснете ОК. Добре. Сега всичко е готово, за да започнете да създавате контекста на база данни за това, да създадете нов клас в проекта ApplicationDbContext InfoNames.Data:

В конструктора на базовия клас, ние посочва името на низа за връзка "DefaultConnection". Сега връзка низ нека към базата от данни, за да добавите към InfoNames.Web на web.config проект.

Обърнете внимание на опцията "Първоначална каталог", това показва името на базата данни, която ще бъде създадена в SQL сървър. база "infonamesdb" ще бъде създаден в моя случай. Сега проект InfoNames.Web е необходимо да се свържете с проект InfoNames.Data:

Какво е едно име 3 на база данни за спа или код първо да entityframework

Изберете проекта, като се отбелязва, че Daw и натиснете ОК. Е, хайде да отидем по-нататък.

Екип Enable-миграции

Да се ​​върнем към проекта InfoNames.Data. е необходимо да се даде възможност за миграция (миграция). Миграцията на база данни ще позволи да се направят промени в модела на данни структура на приложението "автоматично", когато се обаждате командата Актуализация база данни. С други думи, ако ви липсва нещо при разработването на модела, например, да забрави атрибут или пропуснати някои имот, а след това, когато го добавите към модела ще трябва да се изпълни команда Актуализация на база данни преминете към "излезе" на SQL сървъра. EntityFramework ще направи голямата част от работата за вас, ако ще включва миграцията, в противен случай, трябва да напълно да изтриете базата данни и да го генерира наново. И ако вече имате данните.

Забележка: Не всички команди за промяна на схемата на базата данни може автоматично да приложите промените, някои промени ще трябва да се справят с "ръка" екип писане (миграции) лично. Но най-вече, особено в проста структура на базата данни, която ще направи всичко avtomigratsii.

В конзолата за Мениджър на пакети, изпълнете командата:

Проектът се появи InfoNames.Data миграции папка Configuration .cs файл

Миграция, ние закачен, сега нека да ги настроите да работи върху "автоматично" за този имот, разположен в ред 9 до вярно и да добавите още един:

Вече всичко е настроено напълно. Можете да отидете в конзолата за Мениджър на пакети и стартирайте командния Актуализация на базата данни:

Ура! завършена без грешка. Ред 3 показва, че очевидно миграция не е намерен (тези, които са написани "на ръка") и линия 4 актуализации намерени в структурата на данните (разбира се, това е току-що създадената) и avtomigratsiya primenena.V линия 5 е уведомен, че метод набутам семена. Резултатът от екипа е нова база данни в списъка на SQL-сървър:

Какво е едно име 3 на база данни за спа или код първо да entityframework

Ако разбивка и да видите структурата на таблицата:

Какво е едно име 3 на база данни за спа или код първо да entityframework

Това, което исках да се получи в резултат на статията. Следваща изнасям данни от стария ми база данни към новата (той ще остане "зад кулисите"). В следващата статия ще започнем работа с BreezeJS.

заключение

В заключение бих искал да ви напомня, че можете да експериментирате, като изтеглите актуалната версия на проекта от Github.

Подкрепете проекта - споделете линка, благодаря!