Как запросить обновленные значения сразу после запуска процедуры обновления - PullRequest
0 голосов
/ 13 марта 2012

Насколько я могу судить, изменения, внесенные в базу данных с помощью следующего кода для "MySite", являются немедленными:

  public List<vcData> UpdateDisplayAndUrl(List<vcData> vcDataList)
    {
        foreach (vcData vcData in vcDataList)
        {
            _entities.ExecuteStoreCommand("UPDATE vcData SET DisplayItem = {0}, DisplayUrl = {1} WHERE ID = {2} ", vcData.DisplayItem, vcData.DisplayUrl, vcData.ID);
        }                   
        return GetTableData();
    }

Что я хотел бы сделать, так это немедленно вернуть недавно обновленные записи для дальнейшей обработки, по существу, повторно запросить только что внесенные изменения:

    public List<vcData> GetTableData()
    {  
        var result = (from td in _entities.vcData
                      where td.SiteID == "MySite" 
                      select td).ToList();
        return result;
    }  

В своем коде контроллера я пытаюсь сделать что-то вроде:

_currentvcTickerDataList = Repository.UpdateDisplayAndUrl(vcUnupdatedDataList);
//.....do more stuff with _currentvcTickerDataList, which ought to contain updated information, should it not?

ПРОБЛЕМА: метод GetTableData() не возвращает обновленные значения, только предыдущие (не обновленные) значения.

Я новичок в LINQ, инфраструктуре сущностей и MVC, поэтому я почти уверен, что мне не хватает чего-то фундаментального.

1 Ответ

4 голосов
/ 13 марта 2012

Вам необходимо установить MergeOption на OverwriteChanges перед запросом. Пожалуйста, ознакомьтесь с MergeOptions, описанными в msdn , чтобы получить ясное представление.

public List<vcData> GetTableData()
{
    var currentMergeOption =  _entities.vcData.MergeOption;
    _entities.vcData.MergeOption = MergeOption.OverwriteChanges;

    var result = (from td in _entities.vcData
                  where td.SiteID == "MySite" 
                  select td).ToList();

    //revert the change
    _entities.vcData.MergeOption = currentMergeOption;

    return result;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...