Я вижу две проблемы в вашем коде.
1) В коде за вашей страницей xaml вы присваиваете результаты операции загрузки для ItemsSource вашей таблицы данных.
dataGrid1.ItemsSource = operation.Entities;
Проблема в том, что operation.Entities
имеет тип IEnumerable<TEntity>
и поэтому не имеет метода Add. Я предлагаю определить ObservableCollection и использовать его в качестве ItemsSource и заполнить его содержимым операции. Объекты в методе обратного вызова вашей Load-операции.
Возможно, вы могли бы использовать что-то вроде этого (упрощенная версия, не проверенная):
public ObservableCollection<Web.Models.Class1> Class1Collection { get; set; }
context.Load<T>(qry, r =>
{
if (r.HasError)
{
// error handling
}
else if (r.Entities.Count() > 0)
{
this.Class1Collection.Clear();
foreach (Web.Models.Class1 c in r.Entities)
{
this.Class1Collection.Add(c);
}
}
else
{
// handle case when no Entities were returned
}
}, null);
В вашем конструкторе используйте это:
dataGrid1.ItemsSource = this.Class1Collection;
Если вы сделаете это, вы можете добавить новый элемент, используя:
Web.Models.Class1 newItem = new Web.Models.Class1();
this.Class1Collection.Add(newItem);
context.GetEntitySet<Web.ModelsClass1>().Add(newItem);
2) Вы не определили метод вставки или обновления для Class1 в вашем DomainService.
Меня немного смущает использование вами Class1 и ProductPM. Они должны быть одинаковыми?
В любом случае, если вы хотите добавить новые экземпляры Class1, вам необходимо иметь метод InsertClass1(Class1 newObject)
в вашем DomainService (и, предпочтительно, метод Update тоже).