Я, кажется, озадачен вероятным простым решением.Обычно я использовал отложенную загрузку в EF 4.1 и сейчас пытаюсь использовать готовую загрузку в своем приложении, чтобы я мог без проблем использовать встроенный сериализатор JSON.У меня проблема в том, что я не могу понять, как использовать .Include () для загрузки нескольких связей внуков одного уровня.
public class Canvas
{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<ContentArea> Contents { get; set; }
}
public class ContentArea
{
public int ID { get; set; }
public int CanvasID { get; set; }
public string Name { get; set; }
public ICollection<TextContent> TextContents { get; set; }
public ICollection<ImageContent> ImageContents { get; set; }
}
public class TextContent
{
public int ID { get; set; }
public int ContentAreaID { get; set; }
public string Text { get; set; }
public int Color { get; set; }
}
public class ImageContent
{
public int ID { get; set; }
public int ContentAreaID { get; set; }
public string Filename { get; set; }
}
Я пробовал следующее безуспешно.Как я могу написать код загрузки для загрузки TextContents и ImageContents?
Не компилируется:
var c = dataContext.Canvases
.Include(ca => ca.Contents.Select(co => co.ImageContents).Select(co => co.TextContents))
.FirstOrDefault();
Не работает, второй Сначала включают переопределения:
var c = dataContext.Canvases
.Include(ca => ca.Contents.Select(co => co.ImageContents))
.Include(ca => ca.Contents.Select(co => co.TextContents))
.FirstOrDefault();
Не работает, выдает исключение времени выполнения:
var c = dataContext.Canvases
.Include(ca => ca.Contents.Select(co => new { co.ImageContents, co.TextContents }))
.FirstOrDefault();
Редактировать:
Пока я отказался от этого подхода и только что создал модели представления на основе некоторых других статей и подходовони решили проблему «сериализации моделей сущностей» с помощью встроенной в JSON сериализации ASP.NET MVC.Это заставило меня дублировать мои классы, но это стало легко благодаря использованию библиотеки AutoMapper для автоматической передачи всех данных вперед и назад.