2014-12-08 4 views
2

У меня есть существующая база данных со многими (~ 500) таблицами и хранимыми процедурами. Всякий раз, когда база данных обновляется, мне нужно повторно создать файл .edmx для Entity Framework 6 на основе новой схемы; процесс создает около 500 файлов, по одному на каждую таблицу и по меньшей мере один на каждую хранимую процедуру, которая возвращает результаты.Как сделать Entity Framework DB-сначала генерировать одиночный .cs-файл вместо одного файла для каждого класса

По разным причинам я предпочел бы иметь один файл со всеми классами в нем.

Я знаю, что я могу прокомментировать эту линию <EntityModelName>.tt консолидировать все файлы:

// fileManager.Process() 

Однако я могу сделать это только после того, как Entity Framework, генерируемых 500+ файлов. Необходимость делать это каждые несколько дней становится довольно раздражающей.

Обновление файла .edmx вместо удаления и повторного генерации часто приводит к ошибкам из-за проблем с схемой БД, которые в ближайшее время не будут разрешены.

Что было бы лучшим способом гарантировать, что только один .cs-файл сгенерирован с самого начала? Я готов пойти на то, чтобы развернуть EntityFramework, модифицировать шаблоны VS или делать другие нетрадиционные вещи по мере необходимости.

+0

Можете ли вы использовать код сначала вместо файла edmx, вы можете сгенерировать все свои POCO в одном файле и сначала работать с базой данных, установив для инициализатора контекста значение null. –

+0

@ Omar.Alani Я работаю с существующей большой БД, поэтому переход кодового кода значительно более трудоемкий, чем с БД-первым. – ikh

ответ

1

Вы можете использовать инструмент this, который вы можете настроить для генерации всех ваших POCO в один файл (по умолчанию) или для разделения файлов, а также у него есть больше опций, которые вы можете посмотреть и проверить через видео существует в ссылке, которая Я уже упоминал.

Помните, что вы можете переключаться между кодом первой и базы данных сначала просто установив инициализатору контексте в нулевое значение, так что-то вроде:

public class MyDbContext : DbContext 
{ 
    static MyDbContext() 
    { 
     // I don't want to initialize my database from code, I already have a database. 
     Database.SetInitializer<MyDbContext>(null); 
    } 

    // 
    // 
    // you dbsets goes here 
} 

Вы можете найти более подробную информацию о инициализации БД контексты here.

Итак, в нескольких словах вы можете использовать инструмент для создания POCOs для вас и по-прежнему использовать свою базу данных, которая намного чище, чем использование файлов EDMX.

Сообщите мне, если вам нужна дополнительная информация или вы все еще смущены.

Смежные вопросы