2013-11-27 2 views
2

ClickOnce 업데이트로 새로운 배포 된 버전에서 C# 응용 프로그램과 혜택을 얻었습니다.SQL Server 데이터베이스 스키마 자동 업데이트

고객이 데이터베이스 변경 자동 업데이트의 이점을 누릴 수 없기 때문에 응용 프로그램 데이터베이스 스키마로 변경할 때 문제가 있습니다. 솔루션을 제공하십시오. 어떻게하면 DB의 새 버전이 사용 가능한지 확인하기 위해 고객 응용 프로그램을 검사 할 수 있습니까? 업데이트.

그래서 두 가지 문제가 있습니다 :

  1. 어떻게합니까 DB 스키마 새 버전에 대한 고객의 응용 프로그램 검사?
  2. 손실 된 고객 데이터를 피하기 위해 업데이트를 수행하는 방법은 스키마 만 업데이트하면됩니까?
+0

데이터베이스에 액세스하기 위해 어떤 기술을 사용합니까? 어떤 스키마 변경 사항을 적용 할 계획입니까? 어떤 데이터베이스를 사용합니까? – Dennis

+1

sql DB (sql server 2008 r2)입니다. 필드 이름 변경 또는 새 테이블 추가, 프로 시저 저장 ... –

+0

@Dennis 모든 솔루션 plz –

답변

2

각 사용자마다 데이터베이스가 있다고 가정합니다. 이 경우 다음과 같은 작업을 수행 할 수 http://msdn.microsoft.com/en-us/data/jj554735.aspx :

  1. 활성화 "자동 마이그레이션"로 엔티티 프레임 워크를 사용합니다. 이렇게하면 모델 변경이 감지 되 자마자 EF가 자동으로 데이터베이스를 업데이트합니다. 응용 프로그램의 새 버전이 실행 된 경우

  2. 쓰기 마이그레이션이 수동으로 처음 감지하는 ClickOnce IsFirstRun 기능을 사용 - 다음 이런 식으로 뭔가 쓸 수 있습니다 :

public void MigrateData() 
{ 
    if (ApplicationDeployment.IsNetworkDeployed) 
    { 
     if (ApplicationDeployment.CurrentDeployment.IsFirstRun) 
     { 
      try 
      { 
       NS.Logic.DAL.EventDataAccessor.Create().MigrateFromPreviousVersion(); 
       NS.Logic.DAL.UserDataAccessor.Create().MigrateFromPreviousVersion(); 
       // and do the same for all affected accessors 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Could not migrate data from previous version. Please contact the developer.", 
        "My app", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
     } 
    } 
} 

및 MigrateFromPreviousVersion()의 각 접근 자에 대해이 특정 버전의 응용 프로그램에 대한 데이터베이스를 업데이트하기 위해 고유 한 SQL 코드를 작성합니다.

+0

저장된 proc, views, triggers는 어떻습니까 ??? –

+0

C#에서 MainDATASET.xsd에 의해 sql db를 업데이트 할 수 있습니까? –

+0

마이그레이션을 수행하는 SQL 코드 (예 : "CREATE PROCEDURE ..."등)를 생성하고 MigrateFromPreviousVersion() 호출 내에서 실행해야합니다. ADO.Net을 사용하는 경우 -이 게시물은 도움이 될 수 있습니다. http://stackoverflow.com/a/1190832/1246870 – avs099

관련 문제