internal void AddDataType(DataTypeDescriptor dataTypeDescriptor, IEnumerable<SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes) { Type interfaceType = DataTypeTypesManager.GetDataType(dataTypeDescriptor); if (interfaceType == null) return; IEnumerable<Tuple<string, string>> names; SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable<CodeTypeDeclaration> codeTypeDeclarations = codeGenerator.CreateCodeDOMs(dataTypeDescriptor, sqlDataTypeStoreDataScopes, out names); codeTypeDeclarations.ForEach(f => _codeGenerationBuilder.AddType(_namespaceName, f)); _entityClassNamesAndDataContextFieldNames.AddRange(names); _codeGenerationBuilder.AddReference(interfaceType.Assembly); // Property serializer for entity tokens and more string dataIdClassFullName = NamesCreator.MakeDataIdClassFullName(dataTypeDescriptor, _providerName); var keyPropertiesDictionary = new Dictionary<string, Type>(); var keyPropertiesList = new List<Tuple<string, Type>>(); foreach (var keyField in dataTypeDescriptor.KeyFields) { Verify.That(!keyPropertiesDictionary.ContainsKey(keyField.Name), "Key field with name '{0}' already present. Data type: {1}. Check for multiple [KeyPropertyName(...)] attributes", keyField.Name, dataTypeDescriptor.Namespace + "." + dataTypeDescriptor.Name); keyPropertiesDictionary.Add(keyField.Name, keyField.InstanceType); keyPropertiesList.Add(new Tuple<string, Type>(keyField.Name, keyField.InstanceType)); } PropertySerializerTypeCodeGenerator.AddPropertySerializerTypeCode(_codeGenerationBuilder, dataIdClassFullName, keyPropertiesList); }
internal void AddDataContext() { SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable <CodeTypeDeclaration> codeTypeDeclarations = codeGenerator.CreateDataContextCodeDOMs(_entityClassNamesAndDataContextFieldNames); codeTypeDeclarations.ForEach(f => _codeGenerationBuilder.AddType(_namespaceName, f)); }
/// <summary> /// This will not add needed entity class and data context field names if the data entity class does not exist /// </summary> /// <param name="dataTypeDescriptor"></param> /// <param name="sqlDataTypeStoreDataScopes"></param> internal void AddExistingDataType(DataTypeDescriptor dataTypeDescriptor, IEnumerable <SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes) { SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable <Tuple <string, string> > names = codeGenerator.CreateEntityClassNamesAndDataContextFieldNames(dataTypeDescriptor, sqlDataTypeStoreDataScopes); foreach (Tuple <string, string> name in names) { Type type = TypeManager.TryGetType(NamesCreator.MakeNamespaceName(_providerName) + "." + name.Item1); if (type != null) { _codeGenerationBuilder.AddReference(type.Assembly.Location); _entityClassNamesAndDataContextFieldNames.Add(name); foreach (Type interfaceType in type.GetInterfaces()) { _codeGenerationBuilder.AddReference(interfaceType.Assembly); } } } }
/// <summary> /// This will not add needed entity class and data context field names if the data entity class does not exist /// </summary> /// <param name="dataTypeDescriptor"></param> /// <param name="sqlDataTypeStoreDataScopes"></param> internal void AddExistingDataType(DataTypeDescriptor dataTypeDescriptor, IEnumerable<SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes) { SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable<Tuple<string, string>> names = codeGenerator.CreateEntityClassNamesAndDataContextFieldNames(dataTypeDescriptor, sqlDataTypeStoreDataScopes); foreach (Tuple<string, string> name in names) { Type type = TypeManager.TryGetType(NamesCreator.MakeNamespaceName(_providerName) + "." + name.Item1); if (type != null) { _codeGenerationBuilder.AddReference(type.Assembly.Location); _entityClassNamesAndDataContextFieldNames.Add(name); foreach (Type interfaceType in type.GetInterfaces()) { _codeGenerationBuilder.AddReference(interfaceType.Assembly); } } } }
internal void AddDataType(DataTypeDescriptor dataTypeDescriptor, IEnumerable <SqlDataTypeStoreDataScope> sqlDataTypeStoreDataScopes) { Type interfaceType = DataTypeTypesManager.GetDataType(dataTypeDescriptor); if (interfaceType == null) { return; } IEnumerable <Tuple <string, string> > names; SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable <CodeTypeDeclaration> codeTypeDeclarations = codeGenerator.CreateCodeDOMs(dataTypeDescriptor, sqlDataTypeStoreDataScopes, out names); codeTypeDeclarations.ForEach(f => _codeGenerationBuilder.AddType(_namespaceName, f)); _entityClassNamesAndDataContextFieldNames.AddRange(names); _codeGenerationBuilder.AddReference(interfaceType.Assembly); // Property serializer for entity tokens and more string dataIdClassFullName = NamesCreator.MakeDataIdClassFullName(dataTypeDescriptor, _providerName); var keyPropertiesDictionary = new Dictionary <string, Type>(); var keyPropertiesList = new List <Tuple <string, Type> >(); foreach (var keyField in dataTypeDescriptor.PhysicalKeyFields) { Verify.That(!keyPropertiesDictionary.ContainsKey(keyField.Name), "Key field with name '{0}' already present. Data type: {1}. Check for multiple [KeyPropertyName(...)] attributes", keyField.Name, dataTypeDescriptor.Namespace + "." + dataTypeDescriptor.Name); keyPropertiesDictionary.Add(keyField.Name, keyField.InstanceType); keyPropertiesList.Add(new Tuple <string, Type>(keyField.Name, keyField.InstanceType)); } PropertySerializerTypeCodeGenerator.AddPropertySerializerTypeCode(_codeGenerationBuilder, dataIdClassFullName, keyPropertiesList); }
internal void AddDataContext() { SqlProviderCodeGenerator codeGenerator = new SqlProviderCodeGenerator(_providerName); IEnumerable<CodeTypeDeclaration> codeTypeDeclarations = codeGenerator.CreateDataContextCodeDOMs(_entityClassNamesAndDataContextFieldNames); codeTypeDeclarations.ForEach(f => _codeGenerationBuilder.AddType(_namespaceName, f)); }