private void GenerateTableAttribute(IEntityType entityType) { var tableName = entityType.GetTableName(); var schema = entityType.GetSchema(); var defaultSchema = entityType.Model.GetDefaultSchema(); var schemaParameterNeeded = schema != null && schema != defaultSchema; var tableAttributeNeeded = schemaParameterNeeded || tableName != null && tableName != entityType.GetDbSetName(); if (tableAttributeNeeded) { var tableAttribute = new AttributeWriter(nameof(TableAttribute)); tableAttribute.AddParameter(CSharpHelper.Literal(tableName)); if (schemaParameterNeeded) { tableAttribute.AddParameter($"{nameof(TableAttribute.Schema)} = {CSharpHelper.Literal(schema)}"); } ClassAnnotationsData.Add(new Dictionary <string, object> { { "class-annotation", tableAttribute } }); } }
private void GenerateKeylessAttribute(IEntityType entityType) { if (entityType.FindPrimaryKey() == null) { ClassAnnotationsData.Add(new Dictionary <string, object> { { "class-annotation", new AttributeWriter(nameof(KeylessAttribute)) } }); } }
private void GenerateIndexAttributes(IEntityType entityType) { // Do not generate IndexAttributes for indexes which // would be generated anyway by convention. foreach (var index in entityType.GetIndexes().Where( i => ConfigurationSource.Convention != ((IConventionIndex)i).GetConfigurationSource())) { // If there are annotations that cannot be represented using an IndexAttribute then use fluent API instead. var annotations = AnnotationCodeGenerator .FilterIgnoredAnnotations(index.GetAnnotations()) .ToDictionary(a => a.Name, a => a); AnnotationCodeGenerator.RemoveAnnotationsHandledByConventions(index, annotations); if (annotations.Count == 0) { var indexAttribute = new AttributeWriter(nameof(IndexAttribute)); foreach (var property in index.Properties) { indexAttribute.AddParameter($"nameof({property.Name})"); } if (index.Name != null) { indexAttribute.AddParameter($"{nameof(IndexAttribute.Name)} = {CSharpHelper.Literal(index.Name)}"); } if (index.IsUnique) { indexAttribute.AddParameter($"{nameof(IndexAttribute.IsUnique)} = {CSharpHelper.Literal(index.IsUnique)}"); } ClassAnnotationsData.Add(new Dictionary <string, object> { { "class-annotation", indexAttribute } }); } } }