#c# #sql #entity-framework-core #include
#c# #sql #сущность-фреймворк-ядро #включить
Вопрос:
После подключения нескольких таблиц с помощью Include я хочу добавить только атрибут ‘Name’ из таблицы ‘Tag’
var result = context.RssChannels
.Include(rsschannel => rsschannel.Articles)
.ThenInclude(arttag => arttag.ArticleTags)
.ThenInclude(tag => tag.Tag.Name)
.Include(rsschannel => rsschannel.Articles)
.ThenInclude(Rating => Rating.Rating)
.ToList();
public partial class Tag
{
public Tag()
{
ArticleTags = new HashSet<ArticleTag>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<ArticleTag> ArticleTags { get; set; }
}
Можно ли добавлять только отдельные атрибуты из связанной таблицы
Ответ №1:
Метод ThenInclude
должен использоваться только для включения свойств навигации, поэтому, если вы хотите указать одно свойство из свойства навигации, вы должны создать Select
перед материализацией (это означает, перед вызовом некоторых методов FirstOrDefault
, SingleOrDefault
, ToList
, и т.д.).
Кроме того, если вы используете Select
метод, вам не нужно использовать Include
, потому что ядро ef автоматически использует нетерпеливую загрузку, когда используются некоторые проекции данных, подобные Select
;