Доброе утро всем,
Я пытаюсь решить проблему, с которой я столкнулся вначале с помощью кода EF.Моя схема выглядит следующим образом:
public class Article : IUrlNode
{
[Key]
public Guid ArticleID { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateUpdated { get; set; }
public string Summary { get; set; }
[System.ComponentModel.DataAnnotations.InverseProperty("CategoryArticles")]
public virtual IQueryable<Category> ArticleCategories { get; set; }
public string FriendlyUrl
{
get;
set;
}
}
[RouteChild("CategoryArticles")]
public class Category : ContentNode
{
public Guid ServiceId { get; set; }
[System.ComponentModel.DataAnnotations.InverseProperty("ArticleCategories")]
public virtual IQueryable<Article> CategoryArticles { get; set; }
}
Я написал код, с помощью которого я могу извлечь категорию из базы данных, фактически не зная, что это категория.С этого момента я должен снова получить одну статью этой категории, не зная, что это статья.Для категорий я полагаюсь на базовый класс ContentNode, а для Статей - на интерфейс IUrlNode.
Поиск по категориям работает нормально и с одним запросом, но после того, как я на самом деле получаю категорию, мне нужно использовать отражение, чтобы получить свойство навигации, указанное атрибутом RouteChild, чтобы найти ту единственную статью, которая соответствует моим критериям.Проблема заключается в том, что тип свойства навигации - ICollection, что означает, что он в лучшем случае будет использовать ленивую загрузку, принесет все статьи из базы данных и найдет ту, которую я ищу в памяти.
Моя проблема такжеописано в этом предыдущем посте (не мной):
Entity Framework Code First IQueryable
Есть ли способ сделать это свойство навигации IQueryable или какой-либо другой дизайн, которыйможно обойти это ограничение?