2013-12-24 3 views
5

Im, использующий EF6 в моей программе обработки данных. EF не генерирует ObservableCollection, а HashSet и ICollection, поэтому я должен изменить его вручную. К сожалению, каждый раз, когда я обновляю модель из базы данных, каждое отношение Many-Many возвращается к ICollection ...Entity Framework не генерирует ObservableCollection

+0

В вашем проекте будет два файла '.tt'. Откройте его в текстовом редакторе и замените 'HashSet' на' ObservableCollection'. –

+0

Мне нужно изменить оба файла .tt? – Theodoros

+0

Нет, вы будете генерировать класс контекста, вам нужно изменить только тот, который отвечает за создание классов сущностей. –

ответ

8

Заменить ICollection и HashSet с ObservableCollection в файле .tt.
Затем выполните поиск метода public string UsingDirectives.
В этом методе должна быть строка includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",.
Заменить только Generic с ObjectModel. Это будет включать правильное пространство имен для использования ObservableCollections в ваших моделях.

0
  1. Откройте Обозреватель решений и найти EDMX-файл
  2. Найдите файл .TT который будет вложен под EDMX-файл
  3. Дважды щелкните на файле XXXModel.tt, чтобы открыть его в зрительном Редактор студии
  4. Найдите и замените два экземпляра «ICollection» на «ObservableCollection». Они расположены примерно на линиях 296 и 484.
  5. Найти и заменить первое вхождение из "HashSet" с надписью "ObservableCollection". Это событие расположено примерно по строке 50. Не заменяйте второе вхождение HashSet, которое будет найдено позже в коде.
  6. Найти и заменить единственное появление «System.Collections.Generic» на «System.Collections.ObjectModel». Это расположено приблизительно на линии 424.
  7. Сохраните файл XXXModel.tt. Это должно привести к восстановлению кода для объектов. Если код не восстанавливается автоматически, щелкните правой кнопкой мыши на XXXModel.tt и выберите «Запустить пользовательский инструмент».
Смежные вопросы