#entity-relationship #multiple-resultsets #bltoolkit
#сущность-отношение #множественные наборы результатов #bltoolkit
Вопрос:
Если у меня есть отношение «один ко многим» между двумя объектами (т. Е.. Post
и Comment
) и мой мастер-класс определен как:
public class Post {
...
IList<Comment> Comments { get; set; }
}
Но мой Comment
подсвязанный класс не имеет свойства type Post
, потому что никогда не нужно переходить от комментария к сообщению. Комментарии всегда отображаются вместе с экземпляром основной записи.
Затем у меня есть хранимая процедура, которая возвращает два результирующих набора: записи и комментарии, которые связаны с ними. Я определяю мой MapResultSet
как
MapResultSet[] sets = new MapResultSet[2];
sets[0] = new MapResultSet(typeof(Post), posts);
sets[1] = new MapResultSet(typeof(Comment));
sets[0].AddRelation(sets[1], /* what goes here? */, "PostID", "Comments");
Но это не работает, поскольку Comment
у него нет ссылки на its Post
, следовательно, мне нечего определять для второго параметра в верхнем коде. Если я предоставляю string.Empty
или null
, я получаю исключение, если параметр метода неверен.
Как я должен определить взаимосвязь между этими двумя объектами без добавления Post
свойства к Comment
?
Ответ №1:
Комментарий должен иметь «postID», если этого не происходит, невозможно определить запись для комментария (например, в результирующих наборах у нас есть 2 записи и 7 комментариев)
Таким образом, вы должны добавить либо свойство Post, либо postID к классу Comment.
Также для простых случаев, пожалуйста, ознакомьтесь с атрибутом RelationAttribute, пример здесь См. Test2(), это помогает избежать подготовки отношений вручную, нет необходимости писать:
sets[0].AddRelation(sets[1], "PostID", "PostID", "Comments");
Комментарии:
1. На самом деле вы правы. Мой код возвращал одно сообщение с комментариями. Но множественный результирующий набор не может знать об этом. Итак, я полагаю, что ваш ответ должен быть принят. 🙂