Допустим есть БД для хранения постов.
Пост, как сущность в приложении может представлять из себя примерно следующий класс:
public class Post
{
public int Id { get; set; }
public User Author { get; set; } //Автор поста
public string Caption { get; set; }
public string Text { get; set; }
public Attachment[] Attachments { get; set; } //Вложения (картинки, видео)
public Comment[] Comments { get; set; } //Комментарии
}
public class Comment
{
public int Id { get; set; }
public User Author { get; set; } //Автор комментария
public string Text { get; set; }
public Attachment[] Attachments { get; set; } //Вложения (картинки, видео)
}
public class Attachment
{
public int Id { get; set; }
public string Type { get; set; } //'image' или 'video'
public string Link { get; set; } //прямая ссылка или embed
}
Но в БД у автора (пользователей), вложений и комментариев будут свои таблицы.
В контексте же БД в таблице поста будет храниться лишь id
автора поста.
Комментарии в ней не будут упоминаться, т.к., опять же, логичнее разместить столбец post_id
в таблице комментариев и таким образом фильтровать комментарии выбранного поста.
Вложения, скорее всего, не будут иметь единственного владельца (в отличии от комментариев), так что в таблице постов они будут как массив id
вложений.
Как я себе представляю то, как оно должно выглядеть:
Можно ли как-то при помощи LINQ и Entity Framework отправить один запрос, который вернёт полностью заполненный объект класса Post
?
Если да, то как правильно оформить сущности и таблицы, чтобы оно работало корректно?
Опыта работы с БД у меня мало, так что описанное выше это не жёсткие требования задачи, а скорее моё видение ситуации.
Если у вас есть какие-то предложения или исправления в постановке задачи, также буду рад выслушать.
Пока что я вижу только решение "в лоб" с 4 запросами к БД на каждый пост, что выглядит не очень хорошо.
author_id
из таблицы пользователей, id
поста из таблицы комментариев,id
соответствующие массиву id
-шников, перечисленных в посте из таблицы вложений.Как определить границу sqlReader[r] чтобы не вылетать за пределы массива
Не совсем понимаю некоторые вещи в веб технологиях
Напишите детерминированную функцию от двух параметров