Смоделированный текстовый текст и внешние ключи / свойства навигации - PullRequest
1 голос
/ 26 января 2012

У меня есть проблема, решение которой я не смог найти, и мне интересно, может кто-нибудь дать какой-нибудь совет.

У меня есть поддельный набор данных / объектный набор данных, выполненный с помощью интерфейсов и шаблонов t4, с неким волшебством с намерением иметь в наборе данных памяти для модульного тестирования.

Однако, что вы должны делать со значениями внешнего ключа / свойствами навигации?

Допустим, у меня есть отели и клиенты, у ctx.Hotels есть некоторые ценности, но у Customer.Hotels нет. Get - что-то вроде этого, если это отношения один-к-одному:

return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Hotel>("HotelModel.FK_Customers_Hotels", "Hotel").Value;

и один ко многим:

return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<BookingRow>("HotelModel.FK_BookingRows_Customers", "BookingRow");

Моего уровня квалификации просто недостаточно, чтобы даже понять, что здесь происходит.

[править:] Великий Мастер Джули Лерман подтверждает, что это тупик. Вы не можете правильно смоделировать объектные объекты, для этого вам нужны POCO.

1 Ответ

3 голосов
/ 26 января 2012

Перемешивание ObjectContext, когда вы используете сущности на основе EntityObject, в большинстве случаев невозможно, потому что, например, RelationshipManager - это реальный класс, который не может быть заменен вашим издевательством Также ваши сущности сильно зависят от немоделируемого кода EF.

Примечание: «В основном», потому что вы можете имитировать его, но вам нужна специальная среда, перехватывающая вызовы реальных объектов и перенаправляющая их в ваши методы. Это возможно только с TypeMock Isolator или MS Moles.

Btw. издевательский код EF - это то, что вы не хотите делать - пройдите этот ответ и связанные ответы. Некоторые из них предназначены для более нового EF API, но проблемы остаются теми же.

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