2013-07-29 3 views
1

Oracle 11g 데이터베이스를 사용하고 있습니다. 데이터베이스 및 인덱서에서 생성 된 많은 테이블이 기본 키에 적용되었습니다. 그런 다음 Entity Framework 5.0을 사용하여 데이터베이스에 연결했습니다. 문제는 내가 테이블에 레코드를 저장할 때 자동 증가 값인 기본 키를 보내지 않는다는 것입니다.Edmx가 자동 증가 값을 반환하지 않음

public HttpResponseMessage PostCategory(TBLCATEGORY tblcategory) 
    { 
     if (ModelState.IsValid) 
     { 
      db.TBLCATEGORies.Add(tblcategory); 
      db.SaveChanges(); 
      int32 ID=tblcategory.ID; 
      return ID; 
     } 
    } 

ID = 0을 반환합니다. 그리고 또 하나, 오라클에 Integer라는 열을 생성하는 동안 Entity Framework에서 10 진수를 표시하고 있습니다.

+0

GET과 POST가 섞이지 않았습니까? 게시하는 경우 HttpPost 속성이 누락되었을 수 있습니다. –

+0

론, 답변 해 주셔서 감사합니다. mvc에서 webApi를 사용하고 있으므로 메서드를 게시 할 경우 메서드 이름 앞에 Post에 접두사를 추가해야합니다. 별도로 GET 및 Post 메소드를 정의 할 필요가 없습니다. 그리고 나는 그렇게 생각하지 않습니다, 그것은 edmx updation에 영향을 미칩니다. 왜냐하면 그것은 데이터베이스에 데이터를 저장하기 때문입니다. 그리고 그것은 기본 키를 반환해야합니다. –

+0

실제로 그 메소드가 호출 된 메소드인지 확인하십시오. 이 테이블에만 해당합니까? 다른 테이블에서도 작동합니까? –

답변

1

나는 가정하고 당신이 순서를 정의했다고를 자동 증분을 수행하는 Oracle 데이터베이스의 트리거 EF 모델의 객체 만 업데이트되지만 데이터베이스의 실제 항목에는 올바른 증가 된 ID 값이 표시됩니다. 그렇습니까?

그런 다음 문제는 edmx 모델이 열이 실제로 데이터베이스에서 값이 생성되는 ID 열임을 인식하지 못한다는 것입니다. edmx 모델을 수동으로 편집해야합니다. SSDL 섹션의 각 열 항목은 StoreGeneratedPattern 속성이 "Identity"로 설정되어 있어야합니다. 생성 된 ID 값을 찾기 위해 삽입 한 후 모델을 다시 확인하도록 모델에 지시합니다. 그러나 데이터베이스에서 모델을 업데이트 할 때마다 수동 변경 사항이 손실됩니다. http://blog.aitgmbh.de/2014/06/02/patch-for-entity-framework-models-based-on-oracle-databases/

그리고 난 당신이 프로젝트를 빌드 할 때마다 당신을 위해 모든 것을 수행하는 NuGet 패키지를 만들었습니다 :

나는 그것에 대해 짧은 블로그 게시물을 작성했습니다 심지어 edmx를 업데이트 한 후, http://bit.ly/1hbxIsO

이 방법을 모델에서 지정된 ID 열에 Identity 속성이 다시 추가됩니다.