2012-05-14 2 views
1

나는, 다음이 올바르게 삽입됩니다 업데이트하고 내가 형 DASInput의 새로운 객체 먼저 전화를 걸 때 테이블자동 추적 엔티티 객체

public DASInput UpdateDASInputTable(DASInput fileSetData, Guid programID) 
    { 
     string connectionString = GetConnectionString(programID); 
     BI_ProgramConfigurationEntities dataContext = new BI_ProgramConfigurationEntities(connectionString); 

     dataContext.DASInputs.ApplyChanges(fileSetData); 
     dataContext.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); 
     fileSetData = dataContext.DASInputs.FirstOrDefault(); 

     return fileSetData; 
    } 

에 레코드를 삽입 할 수있는 다음과 같은 기능이 수정 반환하지 데이터베이스 (DASInput 테이블에는 ID 지정이있는 int로 기본 키가 있습니다).

그러나이 처음 삽입은 DASInput 테이블의 기본 키의 수정 된 값을 반환하지 않습니다.

따라서 모든 후속 호출에서 새 레코드가 데이터베이스에 삽입됩니다. 레코드가 삽입 될 때 기본 키 (DB에 의해 생성 된 자체)가 클라이언트에 반환되기를 원합니다. 내가 LINQ에 상당히 지식이없는, 미정이 대답 할

context.Table.AddObject(newStore); 
//or 
context.Table.Add(newStore); 

context.SaveChanges(); 

:

+0

나는 자기 추적 엔티티에 대한 고려 사항에 대해서도 아래 기사를 읽었습니다. http://msdn.microsoft.com/en-us/library/ff407090.aspx 그러나이 문제에 대해 더 자세히 설명하지는 않습니다. – Sagar

답변

0

더의 라인을 따라 LINQ 제어 데이터베이스에 엔티티를 추가하기위한 구문되지 않습니다.

+0

AddObject 메서드가 테이블에 명시 적으로 삽입하고 테이블을 업데이트하지 않습니다. – Sagar

+0

context.SaveChanges()는 추가 된 엔터티를 데이터베이스에 저장합니다. 새로운 레코드를 추가하는 것과는 대조적으로 찾고있는 업데이트 인 경우 context.SaveChanges()를 호출하십시오. context.Add (newStore) - 컨텍스트에서 엔티티를 추적 할 때 데이터베이스에 새 엔티티를 추가하지 않고 속성을 업데이트합니다. –