Генерация файлов классов сущностей из схемы таблиц - PullRequest
1 голос
/ 01 июля 2010

Я использую LINQ to SQL с C #.Есть ли метод, с помощью которого мы можем генерировать файлы классов сущностей из схемы таблицы?Путем перетаскивания таблиц на графический дизайнер создаются классы, но они не являются реальными файлами классов (я имею в виду реальные файлы с расширением cs).

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

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 02 июля 2010

Я не так знаком с LINQ to SQL, как с Entity Framework (v4), но EF наверняка будет соответствовать вашим требованиям.Вы можете загрузить шаблоны POCO для EF от Microsoft, прямо через VS2010 в Менеджере расширений (Инструмент> Менеджер расширений, нажмите «Онлайн-галерея» и выполните поиск POCO).Ссылка - не просто загрузка шаблона, но и пошаговое руководство по началу работы.

Я также запустил серию постов в блоге , которые включают в себя несколько хороших шаблонов T4 для сущности.Модель Framework EDMX, которая автоматически генерирует классы DTO для всех ваших классов сущностей, независимо от того, используете ли вы модель генерации кода по умолчанию или шаблон POCO от Microsoft.Автоматически сгенерированные DTO удобны для использования в пользовательском интерфейсе или на уровне сервисов и избавляют вас от необходимости вносить зависимости от Entity Framework в слои потребления.Также очень легко получить DTO из ваших объектов.

var people = from p in context.People select p;
return people.ToDtos();

Может быть стоит посмотреть (бесстыдное самореклама).

Если вам нужно / хотите придерживаться LINQ to SQL,выполните поиск в Google по запросу "linq to sql POCO", похоже, что некоторые люди достигли определенного успеха в этом, но большинство результатов поиска, похоже, относятся к 2008 году и ранее, поэтому я не уверен насчет валюты / релевантности.

1 голос
/ 04 июля 2010

Абсолютно вы можете, если вы используете шаблон T4 для L2S - http://l2st4.codeplex.com/

Вы по-прежнему используете файл .DBML, но вам нужно установить для «действия по сборке» значение «none» в файлеотключить компиляцию кода по умолчанию, который генерируется.Затем вы добавляете файл .tt и файл .ttinclude из вашей загрузки codeplex.

В шаблоне T4 есть строка кода, которую вы можете изменить в соответствии со своими целями:

FilePerEntity = false, // Put each class into a separate file

Как ни странно, Entity Framework 4 также использует этот подход с двойными методами генерации кода из файла модели, но с EF шаблон T4 включен в VS2010.С Linq-to-sql вы должны загрузить шаблон T4 отдельно.Приятной особенностью использования T4 является то, что вы можете добавлять другие настройки по мере необходимости.Однако изначально сгенерированный код идентичен тому, что вы получили от дизайнера .DBML.

1 голос
/ 01 июля 2010

Все классы, созданные при перетаскивании таблиц в конструктор, создаются как частичные классы.Нет причины, по которой вы не можете просто создать файл для каждого и использовать его для внесения необходимых изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...