@@ -698,147 +698,6 @@ public void SyncFxGenerateSnapshot(object sender, ExecutedRoutedEventArgs e)
698698 }
699699 }
700700
701- public void SyncFxProvisionScope ( object sender , ExecutedRoutedEventArgs e )
702- {
703- var databaseInfo = ValidateMenuInfo ( sender ) ;
704- if ( databaseInfo == null ) return ;
705-
706- if ( databaseInfo . DatabaseInfo . DatabaseType != DatabaseType . SQLCE35 )
707- {
708- EnvDteHelper . ShowError ( "Sorry, only version 3.5 databases are supported for now" ) ;
709- return ;
710- }
711-
712- try
713- {
714- var fileNameWithoutExtension = Path . GetFileNameWithoutExtension ( databaseInfo . DatabaseInfo . Caption ) ;
715- if ( fileNameWithoutExtension == null ) return ;
716- var model = fileNameWithoutExtension . Replace ( " " , string . Empty ) . Replace ( "#" , string . Empty ) . Replace ( "." , string . Empty ) . Replace ( "-" , string . Empty ) ;
717- var sfd = new SyncFxDialog { ModelName = model } ;
718-
719- var res = sfd . ShowModal ( ) ;
720-
721- if ( ! res . HasValue || res . Value != true || ( sfd . Tables . Count <= 0 ) ) return ;
722- if ( SyncFxHelper . SqlCeScopeExists ( databaseInfo . DatabaseInfo . ConnectionString , model ) )
723- {
724- EnvDteHelper . ShowError ( "Scope name is already in use. Please enter a different scope name." ) ;
725- return ;
726- }
727-
728- model = sfd . ModelName ;
729- new SyncFxHelper ( ) . ProvisionScope ( databaseInfo . DatabaseInfo . ConnectionString , model , sfd . Columns . Where ( c => sfd . Tables . Contains ( c . TableName ) ) . ToList ( ) ) ;
730- EnvDteHelper . ShowMessage ( "Scope: " + model + " has been provisioned." ) ;
731- DataConnectionHelper . LogUsage ( "DatabaseSyncProvision" ) ;
732- }
733- catch ( Exception ex )
734- {
735- DataConnectionHelper . SendError ( ex , databaseInfo . DatabaseInfo . DatabaseType , false ) ;
736- }
737- }
738-
739- public void SyncFxGenerateSyncCodeInProject ( object sender , ExecutedRoutedEventArgs e )
740- {
741- var databaseInfo = ValidateMenuInfo ( sender ) ;
742- if ( databaseInfo == null ) return ;
743-
744- if ( package == null ) return ;
745- var dte = package . GetServiceHelper ( typeof ( DTE ) ) as DTE2 ;
746-
747- var dteH = new EnvDteHelper ( ) ;
748-
749- var project = dteH . GetProject ( dte ) ;
750- if ( project == null )
751- {
752- EnvDteHelper . ShowError ( "Please select a project in Solution Explorer, where you want the SyncFx classes to be placed" ) ;
753- return ;
754- }
755- if ( ! dteH . AllowedProjectKinds . Contains ( new Guid ( project . Kind ) ) )
756- {
757- EnvDteHelper . ShowError ( "The selected project type does not support Sync Framework (please let me know if I am wrong)" ) ;
758- return ;
759- }
760- if ( project . CodeModel . Language != CodeModelLanguageConstants . vsCMLanguageCSharp )
761- {
762- EnvDteHelper . ShowError ( "Unsupported code language, only C# is currently supported" ) ;
763- return ;
764- }
765- if ( project . Properties . Item ( "TargetFrameworkMoniker" ) == null )
766- {
767- EnvDteHelper . ShowError ( "The selected project type does not support Sync Framework - missing TargetFrameworkMoniker" ) ;
768- return ;
769- }
770- if ( ! project . Properties . Item ( "TargetFrameworkMoniker" ) . Value . ToString ( ) . Contains ( ".NETFramework" ) )
771- {
772- EnvDteHelper . ShowError ( "The selected project type does not support .NET Desktop - wrong TargetFrameworkMoniker: " + project . Properties . Item ( "TargetFrameworkMoniker" ) . Value ) ;
773- return ;
774- }
775- if ( databaseInfo . DatabaseInfo . DatabaseType != DatabaseType . SQLCE35 )
776- {
777- EnvDteHelper . ShowError ( "Sorry, only version 3.5 databases are supported for now" ) ;
778- return ;
779- }
780-
781- try
782- {
783- var fileNameWithoutExtension = Path . GetFileNameWithoutExtension ( databaseInfo . DatabaseInfo . Caption ) ;
784- if ( fileNameWithoutExtension != null )
785- {
786- var model = fileNameWithoutExtension . Replace ( " " , string . Empty ) . Replace ( "#" , string . Empty ) . Replace ( "." , string . Empty ) . Replace ( "-" , string . Empty ) ;
787- var sfd = new SyncFxDialog { ModelName = model } ;
788-
789- var res = sfd . ShowModal ( ) ;
790- if ( ! res . HasValue || res . Value != true || ( sfd . Tables . Count <= 0 ) ) return ;
791- model = sfd . ModelName ;
792- var defaultNamespace = project . Properties . Item ( "DefaultNamespace" ) . Value . ToString ( ) ;
793-
794- var classes = new SyncFxHelper ( ) . GenerateCodeForScope ( string . Empty , databaseInfo . DatabaseInfo . ConnectionString , "SQLCE" , model , sfd . Columns . Where ( c => sfd . Tables . Contains ( c . TableName ) ) . ToList ( ) , defaultNamespace ) ;
795- var projectPath = project . Properties . Item ( "FullPath" ) . Value . ToString ( ) ;
796-
797- foreach ( var item in classes )
798- {
799- var fileName = Path . Combine ( projectPath , item . Key + ".cs" ) ;
800- if ( File . Exists ( fileName ) )
801- {
802- File . Delete ( fileName ) ;
803- }
804- File . WriteAllText ( fileName , item . Value ) ;
805- project . ProjectItems . AddFromFile ( fileName ) ;
806- }
807- //Adding references - http://blogs.msdn.com/b/murat/archive/2008/07/30/envdte-adding-a-refernce-to-a-project.aspx
808- EnvDteHelper . AddReference ( project , "System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" ) ;
809-
810- EnvDteHelper . AddReference ( project , "Microsoft.Synchronization, Version=2.1.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" ) ;
811- EnvDteHelper . AddReference ( project , "Microsoft.Synchronization.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" ) ;
812- EnvDteHelper . AddReference ( project , "Microsoft.Synchronization.Data.SqlServer, Version=3.1.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" ) ;
813- EnvDteHelper . AddReference ( project , "Microsoft.Synchronization.Data.SqlServerCe, Version=3.1.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" ) ;
814- EnvDteHelper . ShowMessage ( "Scope: " + model + " code generated." ) ;
815- DataConnectionHelper . LogUsage ( "DatabaseSyncCodegen" ) ;
816- }
817- }
818- catch ( Exception ex )
819- {
820- DataConnectionHelper . SendError ( ex , databaseInfo . DatabaseInfo . DatabaseType , false ) ;
821- }
822- }
823-
824- private static void AddRowVersionColumns ( DatabaseMenuCommandParameters databaseInfo )
825- {
826- using ( var repository = Helpers . RepositoryHelper . CreateRepository ( databaseInfo . DatabaseInfo ) )
827- {
828- var list = repository . GetAllTableNames ( ) ;
829- var allColumns = repository . GetAllColumns ( ) ;
830- foreach ( var table in list )
831- {
832- if ( table . StartsWith ( "__" ) ) continue ;
833- var rowVersionCol = allColumns . SingleOrDefault ( c => c . TableName == table && c . DataType == "rowversion" ) ;
834- if ( rowVersionCol == null )
835- {
836- repository . ExecuteSql ( string . Format ( "ALTER TABLE {0} ADD COLUMN VersionColumn rowversion NOT NULL;{1}GO" , table , Environment . NewLine ) ) ;
837- }
838- }
839- }
840- }
841-
842701 private static DatabaseMenuCommandParameters ValidateMenuInfo ( object sender )
843702 {
844703 var menuItem = sender as MenuItem ;
0 commit comments