2011-08-03 2 views
0

내 프로젝트에 Visual Studio 2008, ASP.NET 3.5 및 C#을 사용하고 있습니다. 데이터베이스 연결을 위해 3 계층 아키텍처를 사용하고 있습니다. ID, 이름, 나이 등으로 양식을 디자인했습니다. 데이터베이스 테이블에서 id는 기본 키입니다. 페이지로드시 텍스트 상자에 ID의 다음 값을 자동으로 표시하려고합니다. 그런 다음 사용자는 이름, 나이 등과 같은 다른 세부 정보를 입력해야합니다. 그런 다음 데이터를 테이블에 제출하려고합니다. 어느 누구도 이에 대한 좋은 아이디어를 제안 할 수 있습니까? 3 계층 아키텍처가 처음입니다.ID 자동 증가 및 3 단 구조의 텍스트 상자에 표시

답변

1

최대 함수를 사용하고 증분 열의 최대 값을 얻을 수 있지만 여러 요청이있는 경우 문제가 발생합니다.

이 경우를 처리하기 위해 정적 변수에 값을 한 번 저장하고 그 값을 증가시킬 수 있습니다.

하지만 한 번 제출을 취소하면 여전히 문제가 발생합니다.

데이터베이스를 체크 아웃해야하고 정규 간격으로 최대 값을 폴링해야하며 정적 변수를 확인하고 그에 따라 업데이트해야합니다.

기본적으로 더 부드럽게 알고리즘을 정의해야합니다.

+0

좋은 대답 ...... –

+0

다른 유사한 대답에 대한 언급에서 언급했듯이, 이와 같은 일을하는 것은 단지 문제를 간청하는 것입니다. 당신은 일종의 대답으로 대답했지만, 시스템 사용자가 레코드의 ID를 확인해야하는 것은 전혀 목적이 없으므로 새로운 레코드를 저장하는 데 사용할 이유가 없습니다. 그것은 사용자가 양식에서 ID를 설정해야하는 정말 좋은 이유가 없으면 피해야하는 끔찍한 생각입니다. 나는 정당한 이유를 생각할 수 없습니다. – stephenbayer

0

먼저 당신이

select max(id) from TableName 

다음 ID 열에서 최대 값을 얻을 당신의 데이터베이스에서 사용자 ID에 대한 보여주기 위해 좋은 생각이 아니다

+0

그런 일을하는 데 심각한 문제가 발생할 수 있습니다. 이런 식으로하는 경우 ID를 잠글 수 있습니다 (빈 레코드를 저장하고 ID를 반환하는 등의 작업을 수행하여). 확실히 이걸 믿어. – stephenbayer

+0

두 가지 모두에게 감사드립니다.하지만 가장 중요한 것은 3 티어 아키텍처를 사용하고 있다는 것입니다.그래서 저장 프로 시저, bal, dal 등에 코드를 작성할 때 많은 관심을 기울 이길 원합니다. – user793987

0

텍스트 상자에이 값을 1을 증가시키고 설정 보안상의 관점에서 우리 프로젝트에서 UI ID로 암호화 된 ID를 보내야하는 경우. ID가 자동으로 SQL에 의해 생성 된 경우 뷰에 표시 할 필요가 없다고 생각합니다. 암호화되지 않은 ID를 표시하지 않으려면 어떻게해야합니까?

0

이것은 엔티티 코드와 데이터베이스 계층 연결 코드를 작성하는 매우 기본적인 것으로 모든 프로젝트는 매우 공통적이며 거의 동일합니다. 수동으로 모두 코딩하는 것은 오류가 발생하기 쉽고 시간이 많이 걸리며 완전히 불필요합니다. 난 심각하게 nettiers 프레임 워크를 사용하여 codesmith 같은 도구를 사용하여 코드 생성을 제안합니다.

그리고 실제로 양식에 ID를 표시하려는 이유를 알 수 없습니다. 적절한 방법은 양식을 사용하여 엔티티를 채운 다음 데이터 레이어를 사용하여 해당 엔티티를 저장하는 것입니다. nettiers와 같은 프레임 워크에서 새 엔티티인지 업데이트 된 엔티티인지 또는 변경된 엔티티인지 여부가 추적되고 프레임 워크가 모든 적절한 데이터베이스 호출을 처리합니다. 데이터베이스에서 데이터를 다시 읽어야하는 경우를 제외하고는 ID에 대해 실제로 알 필요가 없습니다. 그러나 데이터 계층에서 반환 된 엔티티는 저장 후 새 ID가 이미 설정되어 있어야합니다.

관련 문제