Я использую шаблоны .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 (которые я надеялся использовать для руководства / примеров) очень сложны.