コード例 #1
0
        private HelperClassesGenerationInfo CompileMissingClasses(DataTypeDescriptor dataTypeDescriptor, Dictionary <DataTypeDescriptor,
                                                                                                                     IEnumerable <SqlDataTypeStoreDataScope> > allSqlDataTypeStoreDataScopes,
                                                                  Dictionary <SqlDataTypeStoreTableKey, StoreTypeInfo> fields,
                                                                  List <SqlDataTypeStoreDataScope> storeDataScopesToCompile,
                                                                  List <SqlDataTypeStoreDataScope> storeDataScopesAlreadyCompiled)
        {
            return(new HelperClassesGenerationInfo
            {
                GenerateCodeAction = codeGenerationBuilder =>
                {
                    var sqlDataProviderCodeBuilder = new SqlDataProviderCodeBuilder(_dataProviderContext.ProviderName, codeGenerationBuilder);
                    sqlDataProviderCodeBuilder.AddDataType(dataTypeDescriptor, storeDataScopesToCompile);

                    sqlDataProviderCodeBuilder.AddExistingDataType(dataTypeDescriptor, storeDataScopesAlreadyCompiled);
                },
                PopulateFieldsAction = types =>
                {
                    foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesToCompile)
                    {
                        string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName);

                        string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName(
                            dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName);
                        Type helperClass = types.Single(f => f.FullName == helperClassFullName);

                        string entityClassFullName = NamesCreator.MakeEntityClassFullName(
                            dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName);
                        Type entityClass = types.Single(f => f.FullName == entityClassFullName);

                        var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName);
                        fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass);
                    }

                    foreach (SqlDataTypeStoreDataScope storeDataScope in storeDataScopesAlreadyCompiled)
                    {
                        string dataContextFieldName = NamesCreator.MakeDataContextFieldName(storeDataScope.TableName);

                        string helperClassFullName = NamesCreator.MakeSqlDataProviderHelperClassFullName(
                            dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName);
                        Type helperClass = TryGetGeneratedType(helperClassFullName);

                        string entityClassFullName = NamesCreator.MakeEntityClassFullName(
                            dataTypeDescriptor, storeDataScope.DataScopeName, storeDataScope.CultureName, _dataProviderContext.ProviderName);
                        Type entityClass = TryGetGeneratedType(entityClassFullName);

                        var storeTableKey = new SqlDataTypeStoreTableKey(storeDataScope.DataScopeName, storeDataScope.CultureName);
                        fields[storeTableKey] = new StoreTypeInfo(dataContextFieldName, entityClass, helperClass);
                    }
                }
            });
        }
コード例 #2
0
        internal void BuildAllCode(CodeGenerationBuilder codeGenerationBuilder)
        {
            var codeBuilder = new SqlDataProviderCodeBuilder(_dataProviderContext.ProviderName, codeGenerationBuilder);

            foreach (InterfaceConfigurationElement element in _interfaceConfigurationElements)
            {
                if (element.DataTypeId == Guid.Empty)
                {
                    continue;
                }

                var dataTypeDescriptor = DataMetaDataFacade.GetDataTypeDescriptor(element.DataTypeId);

                if (!dataTypeDescriptor.ValidateRuntimeType())
                {
                    Log.LogError(LogTitle, string.Format("The non code generated interface type '{0}' was not found, skipping code generation for that type", dataTypeDescriptor));
                    continue;
                }

                var sqlDataTypeStoreDataScopes = new List <SqlDataTypeStoreDataScope>();

                foreach (StorageInformation storageInformation in element.Stores)
                {
                    var sqlDataTypeStoreDataScope = new SqlDataTypeStoreDataScope
                    {
                        DataScopeName = storageInformation.DataScope,
                        CultureName   = storageInformation.CultureName,
                        TableName     = storageInformation.TableName
                    };

                    sqlDataTypeStoreDataScopes.Add(sqlDataTypeStoreDataScope);
                }

                codeBuilder.AddDataType(dataTypeDescriptor, sqlDataTypeStoreDataScopes);
            }

            codeBuilder.AddDataContext();
        }