Entity Framework 6 Създайте модел от съществуваща таблица

Трябва да поддържаме много старо приложение. Има стара част (целият достъп до данни се обработва със съхранени процедури) и тъй като моите предшественици поеха приложението, те започнаха да изграждат нова част за новите изисквания, която използва рамка на обект 6.

Сега клиентът има ново изискване, което се нуждае от достъп до една от таблиците, за които все още няма EF-модел.

Има ли лесен начин за автоматично създаване на EF-модел от съществуваща таблица на база данни? (Искам само тази една таблица, а не цялата останала база данни!) Знаете ли за някакъв инструмент, който може да постигне това, или трябва да го напиша на ръка?

Благодаря предварително


person xeraphim    schedule 02.06.2015    source източник
comment
Има два различни стила на отговорите по-долу, единият предполага, че използвате Code First, другият предполага, че работите с модел на данни за обект (edmx) файл. Не сте посочили какъв формат на модела искате.   -  person pseudocoder    schedule 02.06.2015
comment
Здравей @pseudocoder, прав си. Използвам Code First. :-)   -  person xeraphim    schedule 02.06.2015


Отговори (4)


Използвам EF Power Tools, който е плъгин за Visual Studio.

Изтеглете тук

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

За да проектирате обратно вашата база данни, това е толкова просто:

Командата Reverse Engineer Code First се използва за генериране на класове POCO, картографиране (конфигурация) и извлечени DbContext, които са базирани на съществуваща база данни.

  • Щракнете с десния бутон върху проекта и изберете Entity Framework –> Reverse Engineering Code First.

  • Въведете информацията за съществуваща база данни, въз основа на която искате да извършите обратно инженерство Първо код.

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

https://msdn.microsoft.com/en-us/data/jj593170.aspx

ВАЖНО: От Entity Framework 7 (все още не е пуснат), ще се използва само подходът Code First. Може да искате да помислите за това, преди да изберете друг подход като Model First, например. Можете да прочетете повече за: EF7 - Какво всъщност означава „Само първо кодиране“

person Maxime    schedule 02.06.2015
comment
Доколкото разбирам, EF 7 не е пряк наследник на EF 6. EF 7 е напълно различен път от EF6 и сега е олекотена версия на EF6. С течение на времето EF 7 ще получи и тези функции. Така че не разчитайте на вашето решение дали трябва да изберете EF 6 или EF 7. - person jonas; 02.06.2015
comment
Сблъсках се с много ограничения, когато наследих от проект Model First. Прочетох много публикации за EF и ограниченията и реших, че ще отидем на Code Firt. Може да искате да проверите блога на Роуън Милър (romiller.com) и да намерите друг член на екипа на EF и да проследите тяхната работа. Нямам изричен списък. Просто Google много! :-) - person Maxime; 02.06.2015
comment
@jonas: Съгласен съм с теб. Но ако трябва да започнете проект СЕГА, мисля, че наистина искате да го обмислите. Може да не е пряк наследник, но няма да е различен продукт и миграцията ще бъде възможна. Бих искал тази миграция да бъде възможно най-плавна. - person Maxime; 02.06.2015
comment
Това търсех! Благодаря ти! Въпреки че би било хубаво да можете да изберете за кои таблици да създадете кода и картите :P - person xeraphim; 02.06.2015
comment
Ако имате толкова много таблици, може да искате да създадете нова DB от вашата действителна DB само с таблиците, от които се нуждаете. - person Maxime; 02.06.2015
comment
@Maxime Няма да налагаме EF7 като „първоначално издание“ за всички платформи по време на първоначалното издание, за да поддържаме ASP.NET 5. EF7 ще бъде стекът от данни по подразбиране за ASP.NET 5 приложения, но ние няма да го препоръчаме като алтернатива на EF6 в други приложения, докато не внедрим повече функционалност.“ източник: wintellect. com/devcenter/tsneed/ - person jonas; 03.06.2015
comment
Е, пропускате следващото изречение, което е Като се има предвид, че ASP.NET 5 е в същата позиция „част v1 и част v7“ като EF, липсващите функции ще бъдат по-малък проблем. Ние, разбира се, ще работим, за да ги направим достъпни възможно най-скоро. (източник: goo.gl/ClSruU). Разбирам, че ще пускат често. Може би искате да прочетете EF7 – v1 или v7? от Роуън Милър: goo.gl/Xk1Qrf . Информацията е доста пълна. :-) - person Maxime; 03.06.2015
comment
@downvoter Някаква конкретна причина, за да може да се коригира? - person Maxime; 28.09.2017

Отворете файла на Entity Data Model (edmx) (редактирайте: или създайте такъв, ако все още нямате), щракнете с десния бутон върху повърхността за проектиране в празна област и изберете „Актуализиране на модел от база данни“.

Изберете правилния низ за свързване, ако бъдете подканени, след това изберете раздела „Добавяне“ и разбийте до таблиците във вашата база данни, които искате да добавите, и поставете отметка до тях. Щракнете върху Готово и сте готови.

person pseudocoder    schedule 02.06.2015

Разгледайте приставката за електрически инструменти EF, която ви дава контекстни менюта за Reverse Engineer Code First, както и други опции за генериране на код

https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

person JConstantine    schedule 02.06.2015

Не можете ли просто да създадете EDMX и да изберете само таблиците, към които искате да сочи, вместо цялата DB?

Вижте Генериране от база данни в тази статия

https://msdn.microsoft.com/en-us/data/jj206878.aspx

person Derek Strickland    schedule 02.06.2015