1

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

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

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

ответ

3

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

Я также начал a series of blog posts, которые включают в себя некоторые красивые шаблоны T4 для модели Entity 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

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

+0

Я хочу создать классы сущностей, которые не зависят от LINQ (чтобы иметь почти чистую модель домена и для сохранения незнания). Так что перетаскивание таблиц в конструктор не является решением. Исправьте меня, если я ошибаюсь. – amitkarmakar

+0

Ahh, из вашего вопроса я прочитал его так, как будто вы хотели что-то, что сгенерировало бы ваши классы из схемы для вас и поддерживало LINQ.В настоящее время вы используете LINQ to SQL, только вы хотели бы, чтобы ваши классы каждый в своем .cs-файле. То, что я получил от вопроса в любом случае. Сами классы хранятся в файле MyDatabase.designer.cs, и вы можете копировать/вставлять их из своих собственных файлов .cs и извлекать ненужные материалы. Единственная проблема тогда в том, что дизайнер попытается создать повторяющиеся классы. –

+0

Спасибо. Кстати, классы в файле designer.cs содержат много блоттинга. Мне нужно многое изложить. Разве нет более удобного решения для создания чистых классов сущностей. Я знаю, что я могу программно генерировать классы сущностей, но я просто любопытство, если кто-то уже это сделал, возможно, используя некоторые внешние инструменты. – amitkarmakar

1

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

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

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

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

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

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