У меня есть 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();
}
}