コード例 #1
0
        public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings)
        {
            var entityName  = EntityType.Name.RemoveSpecialChar();
            var serviceHost = new EfTextTemplateHost
            {
                EntityType              = EntityType,
                EntityContainer         = modelGenerator.EntityContainer,
                Namespace               = TemplateCommon.serviceNamespace,
                ModelsNamespace         = TemplateCommon.modelsNamespace,
                MappingNamespace        = TemplateCommon.mappingNamespace,
                RepositoryBaseNamespace = TemplateCommon.repositoryBaseNamespace,
                CoreNamespace           = TemplateCommon.coreNamespace,
                RepositoryNamespace     = TemplateCommon.repositoryNamespace,
                EntityFrameworkVersion  = TemplateCommon.entityFrameworkVersion,
                TableSet = mappings.EntityMappings[EntityType].Item1,
                PropertyToColumnMappings = mappings.EntityMappings[EntityType].Item2,
                ManyToManyMappings       = mappings.ManyToManyMappings,
                EntityName = entityName
            };
            var serviceContents = templateProcessor.Process(Templates.ServiceTemplate, serviceHost);

            var servicePath = Path.Combine(Directory, entityName + "Service" + serviceHost.FileExtension);

            FileGenerator.AddNewFile(servicePath, serviceContents);
        }
コード例 #2
0
        public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings)
        {
            var contextHost = new EfTextTemplateHost
            {
                EntityContainer        = modelGenerator.EntityContainer,
                Namespace              = TemplateCommon.modelsNamespace,
                ModelsNamespace        = TemplateCommon.modelsNamespace,
                MappingNamespace       = TemplateCommon.mappingNamespace,
                EntityFrameworkVersion = TemplateCommon.entityFrameworkVersion
            };
            var contextContents = templateProcessor.Process(Templates.ContextTemplate, contextHost);

            var contextFilePath = Path.Combine(Directory, modelGenerator.EntityContainer.Name + contextHost.FileExtension);

            FileGenerator.AddNewFile(contextFilePath, contextContents);
        }
コード例 #3
0
        public void Generator(EntityModelSchemaGenerator modelGenerator, TemplateProcessor templateProcessor, EdmMapping mappings)
        {
            var entityName = EntityType.Name.RemoveSpecialChar();
            // Generate the entity file
            var entityHost = new EfTextTemplateHost
            {
                EntityType             = EntityType,
                EntityContainer        = modelGenerator.EntityContainer,
                Namespace              = Namespace,
                ModelsNamespace        = Namespace,
                MappingNamespace       = TemplateCommon.mappingNamespace,
                EntityFrameworkVersion = TemplateCommon.entityFrameworkVersion,
                TableSet = mappings.EntityMappings[EntityType].Item1,
                PropertyToColumnMappings = mappings.EntityMappings[EntityType].Item2,
                ManyToManyMappings       = mappings.ManyToManyMappings,
                EntityName = entityName
            };
            var entityContents = templateProcessor.Process(Templates.EntityTemplate, entityHost);

            var filePath = Path.Combine(Directory, entityName + entityHost.FileExtension);

            FileGenerator.AddNewFile(filePath, entityContents);
        }
コード例 #4
0
        public void ReverseEngineerCodeFirst()
        {
            try
            {
                // Find connection string and provider
                string connectionString  = "data source=172.21.4.31,10086;initial catalog=Eme4;user id=eme;password=io77@68;MultipleActiveResultSets=True;App=EntityFramework"";
                var    providerInvariant = "System.Data.SqlClient";
                string projectNamespace  = "TEST";
                string currentDirectory  = System.IO.Directory.GetCurrentDirectory();

                DbConnection connection = new SqlConnection(connectionString);

                // Load store schema
                var storeGenerator = new EntityStoreSchemaGenerator(providerInvariant, connectionString, "dbo");
                storeGenerator.GenerateForeignKeyProperties = true;
                var errors = storeGenerator.GenerateStoreMetadata(_storeMetadataFilters).Where(e => e.Severity == EdmSchemaErrorSeverity.Error);


                // Generate default mapping

                var contextName    = connection.Database.Replace(" ", string.Empty).Replace(".", string.Empty) + "Context";
                var modelGenerator = new EntityModelSchemaGenerator(storeGenerator.EntityContainer, "DefaultNamespace", contextName);
                modelGenerator.PluralizationService         = PluralizationService.CreateService(new CultureInfo("en"));
                modelGenerator.GenerateForeignKeyProperties = true;
                modelGenerator.GenerateMetadata();

                // Pull out info about types to be generated
                var entityTypes = modelGenerator.EdmItemCollection.OfType <EntityType>().ToArray();
                var mappings    = new EdmMapping(modelGenerator, storeGenerator.StoreItemCollection);


                // Generate Entity Classes and Mappings
                var templateProcessor      = new TemplateProcessor();
                var modelsNamespace        = projectNamespace + ".Models";
                var modelsDirectory        = Path.Combine(currentDirectory, "Models");
                var mappingNamespace       = modelsNamespace + ".Mapping";
                var mappingDirectory       = Path.Combine(modelsDirectory, "Mapping");
                var entityFrameworkVersion = GetEntityFrameworkVersion();

                foreach (var entityType in entityTypes)
                {
                    // Generate the code file
                    var entityHost = new EfTextTemplateHost
                    {
                        EntityType             = entityType,
                        EntityContainer        = modelGenerator.EntityContainer,
                        Namespace              = modelsNamespace,
                        ModelsNamespace        = modelsNamespace,
                        MappingNamespace       = mappingNamespace,
                        EntityFrameworkVersion = entityFrameworkVersion,
                        TableSet = mappings.EntityMappings[entityType].Item1,
                        PropertyToColumnMappings = mappings.EntityMappings[entityType].Item2,
                        ManyToManyMappings       = mappings.ManyToManyMappings
                    };
                    var entityContents = templateProcessor.Process(Templates.EntityTemplate, entityHost);

                    var filePath = Path.Combine(modelsDirectory, entityType.Name + entityHost.FileExtension);
                    FileGenerator.AddNewFile(filePath, entityContents);

                    var mappingHost = new EfTextTemplateHost
                    {
                        EntityType             = entityType,
                        EntityContainer        = modelGenerator.EntityContainer,
                        Namespace              = mappingNamespace,
                        ModelsNamespace        = modelsNamespace,
                        MappingNamespace       = mappingNamespace,
                        EntityFrameworkVersion = entityFrameworkVersion,
                        TableSet = mappings.EntityMappings[entityType].Item1,
                        PropertyToColumnMappings = mappings.EntityMappings[entityType].Item2,
                        ManyToManyMappings       = mappings.ManyToManyMappings
                    };
                    var mappingContents = templateProcessor.Process(Templates.MappingTemplate, mappingHost);

                    var mappingFilePath = Path.Combine(mappingDirectory, entityType.Name + "Map" + mappingHost.FileExtension);
                    FileGenerator.AddNewFile(filePath, entityContents);
                }

                // Generate Context

                var contextHost = new EfTextTemplateHost
                {
                    EntityContainer        = modelGenerator.EntityContainer,
                    Namespace              = modelsNamespace,
                    ModelsNamespace        = modelsNamespace,
                    MappingNamespace       = mappingNamespace,
                    EntityFrameworkVersion = entityFrameworkVersion
                };
                var contextContents = templateProcessor.Process(Templates.ContextTemplate, contextHost);

                var contextFilePath = Path.Combine(modelsDirectory, modelGenerator.EntityContainer.Name + contextHost.FileExtension);
                FileGenerator.AddNewFile(contextFilePath, contextContents);
            }
            catch (Exception exception)
            {
            }
        }