2012-12-04 4 views
1

사용자 작성 데이터를 저장하는 mssql 데이터베이스가있는 winforms 프로젝트가 있습니다. 모두 Visual Studio C# 2010에서 작성되었습니다. 프로젝트를 게시 할 수 있으며 내 로컬 컴퓨터에서 clickonce로 배포하십시오. 응용 프로그램이 자동으로 업데이트되고 잘 작동합니다. 새 버전을 설치하면 모든 테이블 데이터가 데이터베이스에 삭제됩니다. 현재 게시 할 때 배포하는 데이터베이스에는 데이터가 없지만 나중에 필요할 경우 필요합니다.데이터베이스에 테이블을 삭제하지 않고 winforms 프로젝트를 게시/업데이트하는 방법

Visual Studio에서이 동작을 변경하는 방법이 있습니까? 그렇지 않으면 어떻게 업데이 트에 대한 모든 사용자 데이터를 삭제에서 데이터베이스를 막으려 고합니까?

나는이 질문에 이전에 물었다. 그러나 사용자는 그것이 건설적이지 않다고 생각했다. 한 사용자가 "데이터베이스를 덮어 쓰고 C# 또는 Visual Studio와 아무런 관련이없는 설치 문제가있는 것 같습니다."

누군가이 사용자가 SETUP에서 무엇을 의미하는지 자세히 설명해 줄 수 있습니까?

이것은 매우 건설적인 질문 일 것입니다. 이것은 winforms 응용 프로그램을 자동으로 업데이트하는 데 매우 중요한 부분이기 때문에 생각합니다. 검색했지만이 문제에 대해 올바른 단어를 사용할 수 없습니다. 이것이이 사이트와 관련이 없거나 관련이 없다면 적어도 올바른 방향으로 나를 가리킬 수 있습니까?

+0

'새로운 버전을 설치할 때 데이터베이스의 모든 테이블 데이터를 삭제합니다. '이 문제에 대해 들어 본 적이 없습니다. 아마도 당신은 어떻게 당신이 설치하는지 보여줄 필요가 있습니다. 데이터를 삭제하는 코드가 있습니까? 그렇다면 제거하십시오.:) –

+0

설치 또는 업데이트와 관련된 코드를 작성하지 않았습니다. 나를 만든 데이터를 삭제하는 코드가 없습니다. 게시를 클릭하여 설치합니다. Visual Studio Express는 IIS 위치에 설치하도록 설정됩니다. VSE 게시 후 로컬 컴퓨터에서 웹 페이지를 엽니 다. 설치 링크를 클릭합니다. 단순히 게시를 클릭 한 다음 이미 설치된 응용 프로그램을 열어 업데이트합니다. 업데이트하고 싶은지 묻습니다. 설치를 클릭하십시오. 프로그램이 새 버전으로 열리지 만 이전에 입력 한 모든 데이터가 삭제되었습니다. – user1804465

+0

내가 가지고있는 문제는 배포 과정에서 데이터베이스를 제공한다는 것입니다. 따라서 배포 할 때 데이터베이스를 포함하여 이전에 있던 모든 것을 덮어 씁니다. 나는 당신을위한 해결책이 없습니다; 내 경우에는 데이터베이스가 응용 프로그램과 분리되어 있으며 연결되어있는 동안에는 배포 패키지에 포함되지 않으며 코드를 참조하는 코드 만 있습니다. 즉 db는 별도의 서버에 있습니다. – andrew

답변

1

사용자가 이전에 옳다고 생각합니다. 문제를 올바르게 이해하고 있다면 VS 또는 C#보다 버전 관리 및 배포 전략과 관련이 있습니다.

앱에 기능을 빌드하여로드시 앱 버전을 확인하고 데이터베이스가 이미 존재하는지 확인한 다음 해당 위치에서 수행 할 작업을 결정할 수 있습니다.

해결책은 당신이 배포 또는 데이터베이스가 이전보다는 존재하는 경우 단순히

possible answer

deployment strategy

another deployment strategy을 덮어 무엇 버전을 기반으로 데이터베이스를 업데이트 SQL 스크립트를 배포 할 수 esp 전략 # 3 - 재실행 스크립트 사용

EDIT 당신의 문제라고 생각합니다. 디버그 또는 릴리스를 사용하여 배포하는지 여부와 관련이 거의 없습니다.

+0

정확합니다. 도움이되지 않았다. 이전에 간단한 변경 작업을 한 적이 있었는데 테이블을 삭제하지 않았습니다. 방금 전에 존재했던 테이블 어댑터의 새로운 인스턴스를 포함하는 큰 코드 변경으로 업데이트했습니다 (즉, 데이터베이스는 변경하지 않고 코드 만 변경). 다시 모든 데이터가 삭제되었습니다. – user1804465

+0

당신의 전략을 다룰 필요가 있다고 생각합니다. 어딘가에서 설정을 변경하는 것만 큼 간단하지 않을 것이라고 생각합니다. 유지하는 것이 걱정되는 사용자 설정 일 경우 어쩌면 데이터베이스와 별도의 파일에 보관할 수 있으며 현재 전략을 계속 진행할 수 있습니다. 그러나이 전략은 미래에 매우 제한적인 유연성을 제공합니다. 작업 솔루션을 구현하는 것은 생각만큼 힘들지 않습니다. 내가 게시 한 링크를 읽었습니까? 다시 실행 가능한 스크립트? – kurasa

0

Visual Studio에서 응용 프로그램을 실행하면이 문제가 발생한다고 말합니다. 내 생각 엔 VS 프로젝트에 포함 된 데이터베이스의 복사본 속성이 "항상 복사"로 설정되어 있습니다. 즉, 빌드 할 때 데이터베이스를 \ bin \ 폴더로 복사하고 새 복사본에 대해 실행 중임을 의미합니다.

게시 할 때 ClickOnce는 해당 데이터베이스를 ApplicationData 폴더에 저장합니다. 그런 다음 업데이트를 게시하면 데이터베이스가 새 버전의 ApplicationData 폴더로 전달됩니다. 솔직히 말해서, 나는 이것을 결코 좋아하지 않았다. 사용자가 애플리케이션을 제거하면 모든 데이터가 손실된다. this approach을 권장합니다.이 방법은 사용자의 프로필에 따라 ApplicationData에 데이터를 복사하여 더 잘 제어하는 ​​방법을 보여줍니다. 이것은 VS에서 응용 프로그램을 실행하는 경우에도 작동합니다. VS에 응용 프로그램을 복사 한 다음 동일한 데이터베이스를 반복적으로 사용하기 때문입니다.

관련 문제