Entity Framework 4.1 RC POCO - модульное тестирование имени производимых имен полей - PullRequest
2 голосов
/ 07 апреля 2011

Можно ли получить доступ к метаданным об объекте POCO, используя EF4.1, в котором указано, каковы имена полей базы данных?Наиболее важно для значений внешнего ключа.

Я хотел бы получить доступ к этому для целей модульного тестирования при попытке применить EF4.1 к существующей схеме базы данных.Я не могу изменить существующие имена столбцов.

В настоящее время тесты создают базу данных с использованием SQL Server Compact 4.0, чтобы я мог видеть имена полей, но было бы лучше, если бы это было автоматизировано.

Псевдокод для теста:

  • Создать объект
  • Сохранить объект
  • Проверить, что имя поля соответствует ожидаемому

1 Ответ

4 голосов
/ 07 апреля 2011

Это не модульное тестирование. Это интеграционное тестирование. Более того, такие тесты не слишком полезны. Не позволяйте EF создавать базу данных, а использовать копию существующей базы данных. Просто сохраните сущность и загрузите сущность в новом контексте. Если данные в порядке, вы счастливы с этим. Вы можете сделать каждую тестовую транзакцию так, чтобы транзакция откатывалась после каждого теста.

EF 4.1 с первым подходом к коду не предоставляет доступ к рабочей области метаданных. Вы можете попытаться преобразовать DbContext обратно в ObjectContext и попытаться получить доступ к MetadataWorkspace:

ObjectContext ctx = ((IObjectContextAdapter) context).ObjectContext;
MetadataWorkspace workspace = ctx.MetadataWorkspace;

Поиск чего-либо в MetadataWorkspace - это ужасный опыт. Этот класс определенно не предназначен для использования в пользовательском коде.

...