Понимание генераторов POCO - PullRequest
3 голосов
/ 13 февраля 2012

Я пытаюсь понять, что должны делать генераторы poco в .NET. По моему мнению, они должны быть инструментами генерации кода, которые позволят мне выбирать сущности из моего файла edmx, для которого я хочу создать POCO, и генерировать классы на основе полей таблицы, в то же время позволяя настраивать сгенерированное имя poco так, чтобы оно было другим из имени класса, созданного в моем файле edmx designer.cs. Скажем, например: у меня есть таблица с именем Customer, которая в файле edmx названа как Customers. Теперь инструмент генерации poco должен позволить мне создать класс, скажем, BusinessCustomers.

Однако, хотя они и создают этот класс, не позволяя мне настраивать имя сгенерированного класса, я заметил, что при создании таких pocos из этого примера они, как правило, являются классами, которые все еще принадлежат с помощью инструмента генерации кода. Сгенерированный класс Poco является частичным классом с именем Customers, который в основном является расширением класса edmx. Я не могу выборочно выбирать, для каких объектов я хочу генерировать pocos. Поэтому, если я внесу изменения в сгенерированный класс, они будут потеряны в любое время, когда я добавлю новые таблицы в файл edmx и захочу создать новые документы с помощью инструмента. Конечно, я могу скопировать сгенерированные классы в другой проект и использовать их оттуда, но я не уверен, что это правильный путь. В моем примере выше сгенерированный класс poco является частичным классом с именем Customers, с виртуальными свойствами, по одному для каждого поля в таблице. Edmx designer.cs стирается. Я все еще собираюсь использовать класс, сгенерированный инструментом в моем коде. Если мне нужен отдельный класс poco, мне все равно придется написать его самому ... Разве генератор poco не должен был создать для меня новый набор классов, оставив классы edmx без изменений?

Как минимум, все, что мне нужно, - это инструмент для генерации классов для меня, и не трогать его снова, когда он закончил с генерацией. Если я правильно понял ADO.NET C # POCO Entity Generator, он не выполняет такую ​​работу. Есть ли лучшие инструменты или я должен придерживаться ручного кодирования моих классов Poco для своих требований? Что ты думаешь?

Извините, если мой вопрос немного сбивает с толку; Я пишу это с ограниченным и, возможно, неправильным пониманием предмета. Спасибо за ваше время ...

1 Ответ

1 голос
/ 13 февраля 2012

Генераторы класса POCO существуют для того, чтобы помочь вам настроить процесс генерации, изменив шаблон T4, который их генерирует, а также отделить их от проекта, содержащего EDMX.Это может быть очень полезно, скажем, для тестирования, когда вы заменяете EDMX на собственный генератор или некоторую другую структуру подачи данных, которая заполняет ваши сгенерированные классы, которые могут быть в проекте, совершенно отличном от самого edmx.Настройка Все, что вам нужно сделать, это объявить эти классы как Частичные (не уверен, что это по умолчанию, но может легко изменить это в шаблоне T4).Итак, у вас есть другой файл, представляющий часть класса, содержащую пользовательский код.Таким образом, вы можете настраивать свои классы, не теряя изменений при их повторной генерации.

Такой короткий ответ, вы должны придерживаться POCO Generator, поскольку он упрощает весь процесс отображения таблиц БД в классы.

...