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)); }
/// <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)); }