Чи є Рамковий кодекс суб'єкта господарювання спочатку трохи безглуздим / марним у виробництві і яка хороша стратегія EF для виробництва?


29

Нещодавно я програмував за допомогою Entity Framework 4.1 Code, спочатку і люблю його для розробки, але, маючи лише кінцевий план і швидко змінюється список функцій, постійно змінюю Клас / Базу даних для задоволення потреб додатків.

У розробці немає живих даних, і я можу легко просто видалити всю базу даних, щоб вона була відтворена за допомогою нової схеми, однак, очевидно, коли в прямому ефірі - це дуже погано!

Єдине рішення, яке я бачу, - це або скинути таблицю метаданих і вручну тримати базу даних у синхронізації, або в основному скидати та перезавантажувати.

Я особисто віддаю перевагу першому методу, оскільки думаю, що буде набагато простіше додати стовпчик / таблицю, ніж відтворити та перемістити дані, але, якщо я щось не пропустив, це повністю відходить від Code First.

Тож питання справді полягає в тому, чи Кодекс по-перше стосується початкової розробки та яка хороша стратегія управління EF для виробничого середовища?


Запитували це на кілька днів, не знали, чи найкраще тут чи на Стек переповнення ...
wilhil

Відповіді:


15

На мою думку, автоматичне створення бази даних коду першого призначене лише для розробки. Я відповів на подібні запитання в Stack Overflow, де описав, як оновити базу даних, і чому автоматична функціональність погана у виробництві:

Оновлення бази даних - це завдання напіворучне. Позаду не повинно бути автоматичної неперевіреної магії - більше того, на даний момент в EF 4.1 немає такої магії (є лише деяка презентація про можливості роботи команди ADO.NET).

Ви також можете перевірити це питання, щоб краще зрозуміти, як оновлюються веб-сайти.


Привіт знову! -швидше ти на питання EF! :) ... Не знаю, де я був би без тебе!
1111

Кілька місяців і моя програма закінчена ... Я відзначаю це як відповідь, але мені було цікаво, чи щось змінилося / чи є ресурси, які можуть допомогти?
Вілль

2
Вийшов перший публічний попередній перегляд "Міграції". blogs.msdn.com/b/adonet/archive/2011/07/27/…
Ladislav Mrnka

Дякую, дивлячись на це зараз! Мені подобалося розвиватися разом із Code Code, але я так нервую / переживаю, щоб змінитись згодом!
віл

Як ви обробляєте випадок, коли StoredProcs або Views створюються безпосередньо в БД для інших цілей, наприклад, звітування, які не використовуються додатком. Нам слід знати, на які SP впливають зміни схеми коду.
софведа

5

Підтримуйте сценарії оновлення .

У самій базі даних підтримуйте таблицю, в якій проводиться запис з версією схеми.

Коли ви запускаєте програму, вона виявляє версію проти версії, яка повинна використовуватись бінарними файлами. Якщо він відрізняється, він виконує (або попросить користувача) сценарії оновлення.

Не забудьте спершу створити резервну копію бази даних.


Наступний крок: вас звільняють;) Оновлення бази даних не повинні відкриватися автоматично без створення резервної копії спочатку - а можливо, в простої, а не тоді, коли ОДИН КОРИСТ запускає нову версію. Ваш підхід ідеальний - щоб закрити більші розгортання з тоннами помилок.
TomTom

@TomTom: це залежить. Ми працюємо бездоганно додаток DB протягом декількох років, який робить саме це: автоматична зміна схеми для нового випуску, зроблена програмою, коли вона виявляє занадто стару версію. Резервне копіювання робиться щодня, і ми зберігаємо всі зміни схеми назад сумісними (лише додаючи поля та таблиці, ніколи не видаляючи). Я погоджуюся з тим, що вказані вами заходи є важливими, коли зміни не сумісні з зворотним ходом, і ви не можете гарантувати одночасне оновлення всіх клієнтських додатків (наприклад, для великих корпоративних баз даних).
Док Браун

Зверху, якщо зміни нетривіальні. Спробуйте змінити поле в таблиці 2 Тб (і так, я з цим займаюся - і це навіть не склад даних). Ви налаштовані на сценарій, коли ви накопичуєте технічну заборгованість, оскільки ви можете завжди додавати поля, ніколи не прибирати.
TomTom

2

Питання якимось дефектом полягає в тому, що він пов'язує модель програмування з середовищем виконання, де його немає.

Код по-перше, це перш за все драйвер швидкості розвитку і насправді не підключений до системи виконання.

У виробництві у вас буде належним чином налаштування конфігурації, яка заперечує можливість виконання часу видалення / оновлення db-моделі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.