private void GenerateInversePropertyAttribute(INavigation navigation) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { var inverseNavigation = navigation.FindInverse(); if (inverseNavigation != null) { var inversePropertyAttribute = new AttributeWriter(nameof(InversePropertyAttribute)); var propertyName = EntityTypeTransformationService.TransformNavPropertyName(inverseNavigation.Name, navigation.DeclaringType.Name); inversePropertyAttribute.AddParameter( !navigation.DeclaringEntityType.GetPropertiesAndNavigations().Any( m => m.Name == inverseNavigation.DeclaringEntityType.Name || EntityTypeTransformationService.TransformNavPropertyName(m.Name, navigation.GetTargetType().Name) == EntityTypeTransformationService.TransformNavPropertyName(inverseNavigation.DeclaringEntityType.Name, navigation.GetTargetType().Name)) ? $"nameof({EntityTypeTransformationService.TransformEntityName(inverseNavigation.DeclaringType.Name)}.{propertyName})" : CSharpHelper.Literal(propertyName)); NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", inversePropertyAttribute.ToString() }, }); } } }
private void GenerateForeignKeyAttribute(INavigation navigation) { if (navigation.IsDependentToPrincipal()) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { var foreignKeyAttribute = new AttributeWriter(nameof(ForeignKeyAttribute)); if (navigation.ForeignKey.Properties.Count > 1) { foreignKeyAttribute.AddParameter( CSharpHelper.Literal( string.Join(",", navigation.ForeignKey.Properties.Select(p => EntityTypeTransformationService.TransformNavPropertyName(p.Name, p.ClrType.Name))))); } else { foreignKeyAttribute.AddParameter($"nameof({EntityTypeTransformationService.TransformNavPropertyName(navigation.ForeignKey.Properties.First().Name, navigation.ForeignKey.Properties.First().ClrType.Name)})"); } NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", foreignKeyAttribute.ToString() }, }); } } }
private void GenerateInversePropertyAttribute(INavigation navigation) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { var inverseNavigation = navigation.Inverse; if (inverseNavigation != null) { // TODO: Resolve TransformNavPropertyName() method NavEntityPropertyInfo navEntityPropertyInfo = ResolvingNamesService.ResolvingName(navigation); var foreignKeyAttribute = new AttributeWriter(nameof(ForeignKeyAttribute)); var inversePropertyAttribute = new AttributeWriter(nameof(InversePropertyAttribute)); var propertyName = EntityTypeTransformationService.TransformNavPropertyName(navEntityPropertyInfo.FieldName, navEntityPropertyInfo.ForeginEntityName, navEntityPropertyInfo.EntityName, inverseNavigation.Name, navigation.DeclaringType.Name, navEntityPropertyInfo.PropertyIsNullable); inversePropertyAttribute.AddParameter( !navigation.DeclaringEntityType.GetPropertiesAndNavigations().Any( m => m.Name == inverseNavigation.DeclaringEntityType.Name || EntityTypeTransformationService.TransformNavPropertyName(navEntityPropertyInfo.FieldName, navEntityPropertyInfo.ForeginEntityName, navEntityPropertyInfo.EntityName, m.Name, navigation.TargetEntityType.Name, navEntityPropertyInfo.PropertyIsNullable) == EntityTypeTransformationService.TransformNavPropertyName(navEntityPropertyInfo.FieldName, navEntityPropertyInfo.ForeginEntityName, navEntityPropertyInfo.EntityName, inverseNavigation.DeclaringEntityType.Name, navigation.TargetEntityType.Name, navEntityPropertyInfo.PropertyIsNullable)) ? $"nameof({EntityTypeTransformationService.TransformTypeEntityName(inverseNavigation.DeclaringType.Name)}.{propertyName})" : CSharpHelper.Literal(propertyName)); NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", inversePropertyAttribute } }); } } }
private void GenerateForeignKeyAttribute(INavigation navigation) { if (navigation.IsOnDependent) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { // TODO: Resolve TransformNavPropertyName() method NavEntityPropertyInfo navEntityPropertyInfo = ResolvingNamesService.ResolvingName(navigation); var foreignKeyAttribute = new AttributeWriter(nameof(ForeignKeyAttribute)); if (navigation.ForeignKey.Properties.Count > 1) { foreignKeyAttribute.AddParameter( CSharpHelper.Literal( string.Join(",", navigation.ForeignKey.Properties.Select(p => EntityTypeTransformationService.TransformNavPropertyName(navEntityPropertyInfo.FieldName, navEntityPropertyInfo.ForeginEntityName, navEntityPropertyInfo.EntityName, p.Name, p.ClrType.Name, navEntityPropertyInfo.PropertyIsNullable))))); } else { foreignKeyAttribute.AddParameter($"nameof({EntityTypeTransformationService.TransformNavPropertyName(navEntityPropertyInfo.FieldName, navEntityPropertyInfo.ForeginEntityName, navEntityPropertyInfo.EntityName, navigation.ForeignKey.Properties.First().Name, navigation.ForeignKey.Properties.First().ClrType.Name, navEntityPropertyInfo.PropertyIsNullable)})"); } NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", foreignKeyAttribute } }); } } }
private void GenerateInversePropertyAttribute(INavigation navigation) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { var inverseNavigation = navigation.FindInverse(); if (inverseNavigation != null) { var inversePropertyAttribute = new AttributeWriter(nameof(InversePropertyAttribute)); inversePropertyAttribute.AddParameter(CSharpHelper.Literal(inverseNavigation.Name)); NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", inversePropertyAttribute.ToString() }, }); } } }
private void GenerateForeignKeyAttribute(INavigation navigation) { if (navigation.IsDependentToPrincipal()) { if (navigation.ForeignKey.PrincipalKey.IsPrimaryKey()) { var foreignKeyAttribute = new AttributeWriter(nameof(ForeignKeyAttribute)); foreignKeyAttribute.AddParameter( CSharpHelper.Literal( string.Join(",", navigation.ForeignKey.Properties.Select(p => p.Name)))); NavPropertyAnnotations.Add(new Dictionary <string, object> { { "nav-property-annotation", foreignKeyAttribute.ToString() }, }); } } }