Подтвердить что ты не робот

Visual Studio 2012 - Невозможно переместить файлы EF.tt

В VS2012 я заметил, что при создании новой EF-модели (.edmx) DbContext является генерацией кода по умолчанию, а файлы .tt(T4) теперь вложены под.edmx файл в обозревателе решений.

Вопрос: Есть ли способ переместить эти файлы .tt в другую папку или проект? Когда я пытаюсь перетащить в Solution Explorer, это не позволит мне перемещать вложенный файл .tt.

Проблема: Ранее (в VS2010) я использовал для перемещения одного .tt файла для своих POCOs в библиотеку классов, называемую DataDefinitions, и я оставил другой файл .tt для моего контекста в классе библиотека под названием DataAccess. Теперь мне кажется, что я не смогу переместить эти файлы... и разделить свои активы на разные уровни.

В этой статье MSDN, если вы прокрутите страницу вниз, вы увидите изображение того, как файлы .tt теперь вложены... http://msdn.microsoft.com/en-us/data/jj613116

4b9b3361

Ответ 1

Это какая-то странная новая функция, в которой шаблоны добавляются в зависимости от файла EDMX. Вы можете исправить это, отредактировав файл .csproj для своего проекта (вы можете сделать это в блокноте или выгрузить проект в VS и отредактировать его). Вы найдете что-то вроде этого:

<None Include="Model.tt">
  <Generator>TextTemplatingFileGenerator</Generator>
  <DependentUpon>Model.edmx</DependentUpon>
  <LastGenOutput>Model.cs</LastGenOutput>
</None>

Вам просто нужно удалить элемент DependentUpon, и элемент шаблона станет независимой частью проекта.

Ответ 2

Я использую EF5.x DBContext в отдельном проекте для модели данных EF. Несмотря на удаление записи DependentUpon в файле проекта, как указано в Ladislav и здесь, классы все еще отображались в моем файле Model1.tt.

Чтобы обойти это, мне пришлось также удалить часть записей из файла проекта для каждой из таблиц:

<Compile Include="MyTableName.cs">
  <DependentUpon>Model1.tt</DependentUpon>
</Compile>

Только теги с тегами <DependentUpon> должны быть удалены, в то время как теги <Compile Include="..."> должны храниться. Удаление всей записи приведет к исчезновению файла из списка проектов. Для краткости записи можно сократить до <Compile Include="MyTableName.cs"\>.

Ответ 3

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