И вот небольшая проблема с Асторией - она не работает для меня. Я следовал руководству Michael Sync и внес несколько изменений, таких как использование DataServiceQuery, потому что WebDataQuery не существует в финальной версии Astoria, и т. Д. В итоге я получил два фрагмента кода - первый практически идентичен копии в Michael Статья Sync и вторая используют LINQ-запрос вместо метода CreateQuery (я думаю, что оба эти подхода приводят к одной и той же цели). Вот фрагменты:
SilverchatDBEntities entity =
new SilverchatDBEntities(new Uri("http://localhost:65373/WebDataService1.svc", UriKind.Absolute));
entity.MergeOption = MergeOption.OverwriteChanges;
DataServiceQuery<SCMessages> messages = entity.CreateQuery<SCMessages>("SCMessages");
messages.BeginExecute(
result =>
{
var mess = messages.EndExecute(result);
foreach (var mes in mess)
{
MessagesLB.Items.Add(mes.MessageAuthor);
}
},
null);
Это ничего не делает - оно не выдает никаких исключений и не загружает никаких сообщений SCM. Второй фрагмент выглядит следующим образом:
SilverchatDBEntities entity =
new SilverchatDBEntities(new Uri("http://localhost:65373/WebDataService1.svc", UriKind.Absolute));
var query = (DataServiceQuery<SCMessages>) from m in entity.SCMessages select m;
query.BeginExecute(new AsyncCallback(result =>
{
try
{
var mes = query.EndExecute(result);
foreach (var r in mes)
{
MessagesLB.Items.Add(string.Format("{0}; {1} - {2}",
r.MessageDate.
ToString(
"d/M hh:mm",
CultureInfo.
InvariantCulture),
r.MessageAuthor,
r.MessageText));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}), null);
Этот объект выдает исключение в цикле 'foreach' - 'Ссылка на объект не установлена на экземпляр объекта'. Я понятия не имею, в чем может быть проблема.