2014-07-09 2 views
1

현재 형식에 대한 안전성을 얻기 위해 typeprovider를 사용하여 F #에 데이터베이스 밸런싱 모듈을 작성하고 있습니다.기능적으로 참조에 대한 행 ID를 가져 오는 중

현재 활성 상태 인 레거시 데이터베이스에서 검색 중입니다. 그들이 엔트리를 추가하면 (이 경우 엔 조직) 새로운 데이터베이스와 균형을 맞추어야합니다. 내 문제는 이제 조직과 조직이 참조하는 구성원을 모두 삽입해야한다는 것입니다.

내 질문 : 새로 삽입 된 ID를 어떻게 검색 할 수 있습니까? 아래는 현재 진행 상황입니다.

let updatedOrgs = 
    newOrgs 
    |> Seq.map (fun (org, presi) -> 
     let q = "INSERT INTO members (title, firstname, lastname, phone_number, email, country) VALUES ({0}, {1}, {2}, {3}, {4}, {5}) SELECT SCOPE_IDENTITY()" 
     let answer = localDb.DataContext.ExecuteQuery(q, presi.Title, presi.Firstname, presi.Lastname, presi.Phone_number, presi.Email, presi.Country) 
     org.President_id <- (Seq.head answer) 
     org)  

DB.Orgs.InsertAllOnSubmit(updatedOrgs) 

DB.DataContext.SubmitChanges() 

참고 : 나는 데이터베이스에 직접 실행 한이 코드에서. 나는 형식적인 방식으로 그것을하는 것을 선호 할 것이지만, 나는 그것을 어떻게 이해하는지조차 시작할 수 없다.

답변

0

신사 숙녀 여러분, 해결책은 문제를 검토 한 후 나에게 찾아 왔습니다.

서로를 참조하기 위해 테이블을 사용하는 동안 조직 테이블의 외래 키를 멤버 테이블에 추가하는 것을 잊었습니다.

이렇게하면 구성원 유형에 ID가 없으며 데이터베이스/유형 공급자가 삽입 할 때 자동 반복 ID를 해결합니다.

관련 문제