2010-01-08 6 views
0

Linq2Sql을 사용 중이고 테이블을 업데이트하려고합니다.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"); 
} 

답변

0

난 내 자신의 엔티티를 사용하고 당신이 볼 수있는 컨텍스트 개체에 걸쳐 복사하고 있습니다.

내 문제인가요?

예,이 항목은 (엔티티 추적에 사용됨)을 파괴합니다. 업데이트하는 가장 쉬운 방법은 약 :

User user = _dbctx.Users.Single(u => u.usrID == 1474); 
user.FirstName = "TestXXXX"; 
_dbctx.SubmitChanges(); 
-1

변화를 제출하기 전에, 당신이 문을 "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(); 
    } 
관련 문제