我有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();
}
}