一对多如何在一个返回多个记录时合并两个集合?

时间:2019-01-20 10:32:26

标签: c# entity-framework

我有3个实体用户,帖子和评论。我要通过存储过程返回给定帖子ID的评论列表(当前它返回2套-评论列表和做出每个特定评论的用户列表)。我想将每个用户合并到他们的特定评论中。

这是典型的(用户)对很多(评论)场景,但是要注意的是,我不仅仅返回一个用户,而且还试图避免为ID添加额外的属性。最后,我希望能够执行以下[评论[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();
        }
}

0 个答案:

没有答案