public override void GenerateEntities(string filePrefix, string nameSpace, Data.DbSyncScopeDescription desc, Dictionary <string, Dictionary <string, string> > colsMappingInfo, System.IO.DirectoryInfo dirInfo, CodeLanguage option, string serviceUri)
        {
            // First generate the custom Context file
            CodeCompileUnit compileUnit = GenerateContextFile(filePrefix, nameSpace, desc, serviceUri);

            CodeDomUtility.SaveCompileUnitToFile(compileUnit, option, CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "OfflineContext", option));

            // Then generate the file containing the actual entities
            compileUnit = GenerateEntitiesFile(nameSpace, desc, colsMappingInfo);
            CodeDomUtility.SaveCompileUnitToFile(compileUnit, option, CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "Entities", option));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Generates thes following entities for the service.
        /// 1. An XXXEntities.cs file that contains the SyncScope attributed collection name and all the individual Entities that make that scope.
        /// 2. An .SVC file for the sync service.
        /// 3. The .svc.[Language] code behind file for the above .svc file generated.
        /// </summary>
        /// <param name="filePrefix"></param>
        /// <param name="nameSpace"></param>
        /// <param name="desc"></param>
        /// <param name="dirInfo"></param>
        /// <param name="option"></param>
        /// <param name="colsMappingInfo"></param>
        /// <param name="serviceUri"></param>
        public override void GenerateEntities(string filePrefix, string nameSpace, DbSyncScopeDescription desc, Dictionary <string, Dictionary <string, string> > colsMappingInfo,
                                              System.IO.DirectoryInfo dirInfo, CodeLanguage option, string serviceUri)
        {
            CodeCompileUnit cc = GenerateEntitiesCompileUnit(filePrefix, nameSpace, desc, colsMappingInfo);

            CodeDomUtility.SaveCompileUnitToFile(cc, option, CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "Entities", option));

            cc = GenerateSyncServiceCompileUnit(filePrefix, nameSpace, desc);

            // Generate the codebehing file for .svc file
            string codeBehindFilename = CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "SyncService.svc", option);

            CodeDomUtility.SaveCompileUnitToFile(cc, option, codeBehindFilename);

            // Generate the actual .SVC file.
            CodeDomUtility.SaveSVCFile(nameSpace, cc.Namespaces[0].Types[0].Name, codeBehindFilename, CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "SyncService", CodeLanguage.SVC), option);
        }
        public override void GenerateEntities(string filePrefix, string nameSpace, DbSyncScopeDescription desc,
                                              Dictionary <string, Dictionary <string, string> > colsMappingInfo,
                                              DirectoryInfo dirInfo, CodeLanguage option, string serviceUri)
        {
            var entitiesCC = new CodeCompileUnit();

            var entityScopeNs = new CodeNamespace(nameSpace);

            // Generate the base class for all the entities which will implement IOfflineEntity
            var baseEntity = CodeDomUtility.CreateIOfflineEntityCustomBaseClass(
                string.IsNullOrEmpty(filePrefix) ? desc.ScopeName : filePrefix,
                false /*isServer*/);

            // Set the base type
            // VB uses different keywords for class and interface inheritence. For it to emit the
            // right keyword it must inherit from object first before the actual interface.
            baseEntity.BaseTypes.Add(new CodeTypeReference(typeof(object)));
            baseEntity.BaseTypes.Add(new CodeTypeReference(Constants.ClientIOfflineEntity));

            entityScopeNs.Types.Add(baseEntity);

            // Generate the entities
            foreach (var table in desc.Tables)
            {
                Dictionary <string, string> curTableMapping = null;
                colsMappingInfo.TryGetValue(table.UnquotedGlobalName, out curTableMapping);

                // Generate the actual entity
                var entityDecl = CodeDomUtility.GetEntityForTableDescription(table, true, curTableMapping);

                // Set the base type
                entityDecl.BaseTypes.Add(baseEntity.Name);

                //Add it to the overall scope
                entityScopeNs.Types.Add(entityDecl);
            }

            entitiesCC.Namespaces.Add(entityScopeNs);

            // Generate the files
            CodeDomUtility.SaveCompileUnitToFile(entitiesCC, option,
                                                 CodeDomUtility.GenerateFileName(desc.ScopeName, dirInfo, filePrefix, "Entities", option));
        }