Если вы сначала используете модель, вам это не нужно. Сначала модель предназначена для сценариев, когда у вас нет требований к вашей базе данных.
Изменение этого поведения требует изменения процесса генерации SSDL-части вашего EDMX (который создается, как только вы попросите дизайнера сгенерировать SQL для вас). По умолчанию этот процесс обрабатывается рабочим процессом (%VSINSTALLDIR%\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\TablePerTypeStrategy.xaml
) или он может обрабатываться шаблонами T4, если вы устанавливаете Database Generation Power Pack . Вам придется изменить либо рабочий процесс (реализовать некоторый пользовательский компонент генерации), либо шаблон T4, чтобы использовать ваше соглашение об именах.
Edit:
OK. Я решил попробовать сам, чтобы завершить ответ, даже если считаю, что достаточно указать правильный путь.
Когда вы устанавливаете Power Database Generation Power Pack, вы получаете новый набор шаблонов и рабочих процессов, установленных по указанному выше пути. Один из рабочих процессов называется Generate T-SQL Via T4 (TPT).xaml
. Разница между этим рабочим процессом и оригинальным TablePerTypeStrategy.xaml
заключается в том, что он использует внешние шаблоны T4 для генерации SSDL и MSL. Что вам нужно сделать, это создать копию этого рабочего процесса и поместить его в тот же каталог (вы должны получить другое имя). Вы также должны создать копию ссылочного шаблона T4 для создания SSDL с именем CSDLToSSDL_TPT.tt
, а также поместить его в тот же каталог (с другим именем). Получив копию файла .tt, откройте новый файл .xaml и измените путь к шаблону SSDL на новый (либо в конструкторе в VS, либо в любом текстовом редакторе). В качестве последнего шага вы должны открыть свою копию .tt файла и обновить EntitySet
создание элемента:
foreach (EntityType entityType in edm.GetAllEntityTypes()) { #>
<EntitySet Name="<#=WriteEntityTypeName(entityType, edm)#>" EntityType="<#=ssdlModelNamespace#>.<#=WriteEntityTypeName(entityType, edm)#>" Table="prefix_<#=WriteEntityTypeName(entityType, edm)#>" store:Type="Tables" Schema="<#=databaseSchemaName#>" />
<# }
Я добавил атрибут Table
с именем, указывающим prefix_
(вы можете заменить его своим). Теперь вы должны выбрать новый рабочий процесс в Мастер создания базы данных из модели и создать новый сценарий SQL.