Silverlight WCF RIA, добавление элементов в EntityList и отправка изменений контекста домена - PullRequest
1 голос
/ 01 июня 2011

например, у меня есть сущность TestItem:

public class TestItem
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
}

и просмотр модели со списком, метод, в который мы будем добавлять новые элементы в этот список, и метод, в котором мы будем вызывать _TestDomainContext.SubmitChanges

EntityList<TestItem> SomeList = new EntityList<TestItem>(_TestDomainContext.TestItems);

private void AddTestItem()
{
    SomeList.Add(new TestItem());
}

private void SubmitChanges()
{
    _TestDomainContext.SubmitChanges();
}

И теперь, после того, как первый элемент добавлен в список и вызван метод SubmitChanges (), все работает отлично, но когда я пытаюсь добавить второй элемент, я получаю исключение: объект с такой же идентичностью ужесуществует в этом EntitySet.

- единственный способ избавиться от этого - вручную обновить SomeList в обратном вызове OnSubmitComplete, т.е.:

_TestDomainContext.TestItems.Clear();
_TestDomainContext.Load(_TestDomainContext.GetTestItemsQuery());

Спасибо!

1 Ответ

2 голосов
/ 01 июня 2011

Да, вам нужно обновить клиентскую копию кэша, чтобы новые добавленные поля Id были там.

Для подтверждения концепции попробуйте следующий код:

private void AddTestItem()
{    
    var key = _TestDomainContext.TestItems.Max(c=> c.Id) + 1;
    SomeList.Add(new TestItem(){Id = key});
}

Это разрешит конфликт, но не является правильным способом сделать это, лучше всего обновить / загрузить запрос снова после отправки.

...