Использование метаданных свойства навигации для фильтрации коллекции объектов - PullRequest
0 голосов
/ 24 февраля 2012

Я использую шаблоны .tt в EF4 / .NET 4 для генерации объектов самопроверки из моей модели и репозиториев для доступа к ним.Во время модульного тестирования я хочу иметь возможность поменять «настоящий» ObjectContext с в основном коллекциями сущностей.У меня есть внутренний метод, который предварительно загружает эти репозитории с данными тестирования.

Это работает нормально, пока мне не понадобится доступ к свойствам навигации на этих объектах.Я не хочу кодировать все эти дочерние коллекции вручную.Вместо этого я хотел бы закодировать, скажем, коллекцию Департаментов и коллекцию Сотрудников:

public class Department
{
    public int DepartmentId { get; set; }
    public string DepartmentName { get; set; }
    public List<Employee> Employees { get; set; }
}

public class Employee
{
    public int EmployeeId { get; set; }
    public int DepartmentId { get; set; }
    public string Name { get; set; }
}

var departments = new[]
{
    new Department { DepartmentId = 1, DepartmentName = "Purchasing" },
    new Department { DepartmentId = 2, DepartmentName = "Sales" },
};

var employees = new[]
{
    new Employee { DepartmentId = 1, EmployeeId = 1, Name = "Jan Smith" },
    new Employee { DepartmentId = 1, EmployeeId = 2, Name = "Bob Jones" },
    new Employee { DepartmentId = 2, EmployeeId = 3, Name = "Lisa Johnson" },
    new Employee { DepartmentId = 2, EmployeeId = 4, Name = "Bill Porter" },
};

Так или иначе, учитывая эти две коллекции и мой EDM, мне нужно кодировать функциональность в моем "фиктивном контексте""that:

  • Уведомления У меня есть объект" Отдел "с набором" Сотрудники "(который является свойством навигации, поддерживаемым Ассоциацией)
  • Уведомления, связанные с этим черезDepartmentId
  • Когда я загружаю свои тестовые данные Департаментов, для каждой сущности Department он загружает свою коллекцию сотрудников с соответствующим DepartmentId

, так что в конечном итоге мой "Отдел закупок"У сущности есть коллекция сотрудников, загруженная Яном Смитом и Бобом Джонсом.Но в основном это должно быть сделано только путем проверки EDM, поэтому мне не нужно кодировать эти ассоциации дважды.

По мере расширения моей модели я могу просто создавать закодированные коллекции плоских тестовых данных, но когда они загруженыв моё хранилище макетов он находит все подходящие коллекции и типы, для которых у него также есть соответствующие тестовые данные.

Так что в основном я собираюсь смоделировать .Include () -ing-фиктивные данные, как EF делает для "реальные "данные.У меня вопрос, есть ли что-нибудь, что уже делает это?Или это относительно просто, чтобы кодировать себя?У меня возникают проблемы с поиском документации и примеров по многим этим вещам, а поставляемые шаблоны .tt (которые я надеялся использовать для руководства / примеров) очень сложны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...