Linq2Sql Отправить изменения ничего не делает при обновлении - PullRequest
0 голосов
/ 08 января 2010

Я использую Linq2Sql и пытаюсь обновить таблицу.

Но при попытке обновить столбец обновления не происходит.

Я пробовал это с оператором присоединения, но затем я получаю ошибку дублирующего ключа.

Я использую свою собственную сущность и копирую ее в контекстную сущность, как вы можете видеть.

Это моя проблема?

Это мой метод сохранения.

   public void SaveUser(User user)
    {

        Mylester.Domain.DataContext.User sqluser = new Mylester.Domain.DataContext.User();

        sqluser.usrID = user.ID;
        sqluser.usrEmployeeID = user.EmployeeID;
        sqluser.usrFirstName = user.FirstName;
        sqluser.usrLastName = user.LastName;
        sqluser.usrPassword = user.Password;
        sqluser.usrEmail = user.Email;
        sqluser.usrModified = user.Modified;
        sqluser.usrCreated = user.Created;
        sqluser.usrLastLoggedOn = user.LastLoggedOn;
        sqluser.usrBrowserUsed = user.BrowserUsed;
        sqluser.usrLoginOnly = user.LoginOnly;
        sqluser.usrViewedWeeklyTimesheetChanges = user.ViewedWeeklyTimesheetChanges;
        sqluser.usrActive = user.Active;

        //_dbctx.Users.Attach(sqluser);
        _dbctx.SubmitChanges();
    }

Это мой метод испытаний.

[TestMethod]
public void UpdateUser()
{
    User user;

    user = _service.GetUser(1474);
    user.FirstName = "TestXXXX";
    _service.SaveUser(user);

    user = _service.GetUser(1474);
    Assert.AreEqual(user.FirstName, "TestXXXX");
}

Ответы [ 2 ]

0 голосов
/ 08 января 2010

Перед отправкой изменений необходимо добавить выписку "dbcontext.tablename.InserOnSubmit(object);" способ.

public void SaveUser(User user)
    {

        Mylester.Domain.DataContext.User sqluser = new Mylester.Domain.DataContext.User();

        sqluser.usrID = user.ID;
        sqluser.usrEmployeeID = user.EmployeeID;
        sqluser.usrFirstName = user.FirstName;
        sqluser.usrLastName = user.LastName;
        sqluser.usrPassword = user.Password;
        sqluser.usrEmail = user.Email;
        sqluser.usrModified = user.Modified;
        sqluser.usrCreated = user.Created;
        sqluser.usrLastLoggedOn = user.LastLoggedOn;
        sqluser.usrBrowserUsed = user.BrowserUsed;
        sqluser.usrLoginOnly = user.LoginOnly;
        sqluser.usrViewedWeeklyTimesheetChanges = user.ViewedWeeklyTimesheetChanges;
        sqluser.usrActive = user.Active;
        //Use this to add the sql user to table named "User"
         _dbctx.Users.InsertOnSubmit(sqluser);
        //_dbctx.Users.Attach(sqluser);
        _dbctx.SubmitChanges();
    }
0 голосов
/ 08 января 2010

Я использую свою собственную сущность и копирую ее в контекстную сущность, как вы можете видеть.

Это моя проблема?

Да, это разрушает DataContext s идентификационную карту (используется для отслеживания сущностей). Самый простой способ обновления - это примерно:

User user = _dbctx.Users.Single(u => u.usrID == 1474);
user.FirstName = "TestXXXX";
_dbctx.SubmitChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...