Один ко многим Как объединить 2 набора, когда Один возвращает несколько записей? - PullRequest
0 голосов
/ 20 января 2019

У меня есть 3 лица пользователей, сообщений и комментариев. Я возвращаю список комментариев с заданным идентификатором поста через хранимую процедуру (в настоящее время он возвращает 2 набора - список комментариев и список пользователей, которые сделали каждый конкретный комментарий). Я хочу объединить каждого пользователя в его конкретный комментарий.

Это типичный сценарий (пользователь) ко многим (комментарии), но суть в том, что я не возвращаю только одного пользователя и стараюсь не добавлять дополнительное свойство для идентификаторов. В конце я хочу иметь возможность сделать следующие [ комментарии [0] .user.name ].

Это код, который у меня сейчас есть:

public class User
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Post> Posts { get; set; }
    public List<Comment> Comments { get; set; }
}

public class Comment
{
    [Key]
    public int Id { get; set; }
    public string Body { get; set; }
    public User User { get; set; }
    public Post Post { get; set; }
}

Это код, который я использую для получения обоих наборов:

public void GetCommentsByPostID(int ID)
{
        var cmd = Database.Connection.CreateCommand();
        cmd.CommandText = "[dbo].[GetCommentsByPostID] @ID_Post";   
        cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ID_Post", ID));

        try
        {
            Database.Connection.Open();

            var reader = cmd.ExecuteReader();

            var comments = ((IObjectContextAdapter)this)
                .ObjectContext
                .Translate<Comment>(
                    reader,
                    "Comments",
                    MergeOption.AppendOnly);

            reader.NextResult();
            var users = ((IObjectContextAdapter)this)
                .ObjectContext
                .Translate<User>(
                    reader,
                    "Users",
                    MergeOption.AppendOnly);                
        }
        finally
        {
            Database.Connection.Close();
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...