Код:
public ChatMessage[] GetAllMessages(int chatRoomId)
{
using (ChatModelContainer context = new ChatModelContainer(CS))
{
//var temp = context.ChatMessages.ToArray();
ChatRoom cr = context.ChatRooms.FirstOrDefault(c => c.Id == chatRoomId);
if (cr == null) return null;
return cr.ChatMessages.ToArray();
}
}
Проблема:
Метод (часть службы WCF) возвращает пустой массив.Если я раскомментирую закомментированную строку, она начнет работать как положено.Я попытался включить отложенную загрузку, но это не помогло.
Кроме того, когда это работает, я получаю сообщения ChatMessages со ссылкой на заполненный ChatRoom, но не ChatParticipant.На них ссылается объект ChatMessage в схеме с идентификаторами и свойствами навигации.Идентификаторы установлены и указывают на нужные объекты, но на стороне клиента заполнена только ссылка ChatRoom.
Вопросы, связанные с данной:
- Является ли массив предпочтительным методом длявернуть коллекции EF-сущностей, как это?
- При внесении изменений в мою модель (edmx) мне необходимо запустить опцию «Создать базу данных из модели ...», прежде чем я смогу запустить context.CreateDatabase (),Зачем?Я получаю сообщение об ошибке, указывающее на старый SSDL, но не могу найти, где хранится SSDL.Создается ли это, когда я запускаю эту опцию «Сгенерировать базу данных ...»?
- Безопасно ли возвращать клиенту целые графы сущностей?Я читал кое-что о «исключениях из циклических ссылок», но исправлено ли это в EF4?
- Как и когда заполнены ссылки в EF4?Если у меня включена отложенная загрузка, я подозреваю, что заполняются только объекты, к которым я прикасаюсь?Но с отключенной отложенной загрузкой, должен ли тогда всегда заполняться весь график?
- Есть ли недостатки в использовании самообновляющихся сущностей над обычными сущностями в EF4?Мне не нужно самообновление прямо сейчас, но я могу сделать позже.Могу ли я легко обновиться или я должен начать с самообновления с самого начала?
- Почему я не могу использовать ключи сущностей с типом string?