Entity Framework не генерирует ObservableCollection

c# entity-framework-6 winforms

Вопрос

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

Принятый ответ

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


Популярные ответы

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


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему