У меня есть абстрактная сущность Content в моей модели EF4 с конкретным подклассом, MultipleChoiceItem.В случае MultipleChoiceItem есть связанная таблица, к которой обращается свойство Navigation в объекте MultipleChoiceItem, называемое Options.Я хотел бы загрузить результат опций, потому что если вы получаете MultipleChoiceItem, вы всегда хотите опционы.Тем не менее, я не могу заставить это работать.Вот что я сделал в основном:
MultipleChoiceItem является подклассом, поэтому он не получил метаданные, созданные по умолчанию.Итак, я создал для него класс метаданных, который выглядит примерно так:
[MetadataTypeAttribute(typeof(MultipleChoiceItem.ContentMetadata))]
public partial class MultipleChoiceItem
{
internal sealed class MultipleChoiceItemMetadata
{
... other stuff ...
[Include]
public EntityCollection<McOption> Options { get; set; }
... other stuff ...
}
Затем я создал новый запрос в ContentService, который выглядит следующим образом:
public IQueryable<Content> GetMultipleChoiceItems()
{
return this.ObjectContext.Contents.OfType<MultipleChoiceItem>()
.Include("Options");
}
В модульном тесте я звоню так:
context = new ContentContext();
var loadOperation = context.Load(context.GetMultipleChoiceItemsQuery());
loadOperation.Completed += new EventHandler(CompletedHandler);
Когда я попадаю в CompletedHandler, следующий код, похоже, не имеет параметровсвойство загружено - фактически, Options.Count == 0, когда должно быть 4 (проверено проверкой основного хранилища данных).
MultipleChoiceItem mci = context.Contents.First(c => c.ContentId == mciId) as MultipleChoiceItem;
Может кто-нибудь сказать мне, что я делаю неправильно?Я пытался следить за моделями, которые я видел опубликованные и, по-видимому, что-то упустил ...
Спасибо!