Есть ли лучший способ обновления через LINQ to SQL, когда у вас есть modelItem из mvc - PullRequest
0 голосов
/ 25 июня 2010

Я получаю объект LINQ от MVC2, который я хочу обновить в базе данных. Мой текущий код выглядит так:

        public PersonTbl Save(PersonTbl item)
    {
        if (item.ID == 0) //new item
        {
            _dbContext.PersonTbls.InsertOnSubmit(item);
        }
        else
        {
            var item2 = _dbContext.PersonTbls.Single(i => i.ID == item.ID);
            item2.LastName = item.LastName;
            item2.FirstName = item.FirstName;
            item2.MobilePhone = item.MobilePhone;
        }
        _dbContext.SubmitChanges();
        return item;
    }

Что меня в основном интересует, так это почему нет функции UpdateOnSubmit (item). Можно ли как-нибудь решить это по-другому?

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Я нашел ответ в attatch:

/// <summary>
/// This function inserts or updates an item 
/// </summary>
/// <param name="newPerson">This item will be inserted or updated in the database</param>
/// <returns>Returns the updated version of the object.</returns>
public PersonTbl Save(PersonTbl newPerson)
{
    if (newPerson.ID == 0) //new item
    {
        _dbContext.PersonTbls.InsertOnSubmit(newPerson);
    }
    else
    {
        _dbContext.PersonTbls.Attach(newPerson);
        _dbContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, newPerson);
    }
    _dbContext.SubmitChanges();
    return newPerson;
}
0 голосов
/ 25 июня 2010

Я бы сказал, что у вас нет метода UpdateOnSubmit (), потому что item2 - это анонимный тип, а не класс L2S. Если вы приведете item2 к сущности PersonTbl L2S, у вас все будет в порядке.

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