/// <summary>
        ///     <para>
        ///         Creates the service dependencies parameter object for a <see cref="CoreConventionSetBuilder" />.
        ///     </para>
        ///     <para>
        ///         Do not call this constructor directly from either provider or application code as it may change
        ///         as new dependencies are added. Instead, use this type in your constructor so that an instance
        ///         will be created and injected automatically by the dependency injection container. To create
        ///         an instance with some dependent services replaced, first resolve the object from the dependency
        ///         injection container, then replace selected services using the 'With...' methods. Do not call
        ///         the constructor at any point in this process.
        ///     </para>
        ///     <para>
        ///         This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///         directly from your code. This API may change or be removed in future releases.
        ///     </para>
        /// </summary>
        public CoreConventionSetBuilderDependencies(
            [NotNull] ICoreTypeMapper typeMapper,
            [CanBeNull] IConstructorBindingFactory constructorBindingFactory,
            [CanBeNull] IParameterBindingFactories parameterBindingFactories,
            [CanBeNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger,
            [CanBeNull] ITypeMapper _ = null) // Only needed for D.I. to resolve this constructor
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            TypeMapper = typeMapper;

            if (parameterBindingFactories == null)
            {
                parameterBindingFactories = new ParameterBindingFactories(
                    null,
                    new RegisteredServices(Enumerable.Empty <Type>()));
            }

            ParameterBindingFactories = parameterBindingFactories;

            ConstructorBindingFactory = constructorBindingFactory
                                        ?? new ConstructorBindingFactory(
                new PropertyParameterBindingFactory(),
                parameterBindingFactories);

            Logger = logger
                     ?? new DiagnosticsLogger <DbLoggerCategory.Model>(new LoggerFactory(), new LoggingOptions(), new DiagnosticListener(""));
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public PropertyDiscoveryConvention(
            [NotNull] ICoreTypeMapper typeMapper)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
        }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        protected NavigationAttributeEntityTypeConvention(
            [NotNull] ICoreTypeMapper typeMapper)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
        }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public PropertyMappingValidationConvention(
            [NotNull] ICoreTypeMapper typeMapper)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
        }
Ejemplo n.º 5
0
        public static Type FindCandidateNavigationPropertyType(
            this PropertyInfo propertyInfo,
            ICoreTypeMapper typeMapper,
            IParameterBindingFactories parameterBindingFactories)
        {
            var targetType         = propertyInfo.PropertyType;
            var targetSequenceType = targetType.TryGetSequenceType();

            if (!propertyInfo.IsCandidateProperty(targetSequenceType == null))
            {
                return(null);
            }

            targetType = targetSequenceType ?? targetType;
            targetType = targetType.UnwrapNullableType();

            if (typeMapper.FindMapping(propertyInfo) != null ||
                targetType.GetTypeInfo().IsInterface ||
                targetType.GetTypeInfo().IsValueType ||
                targetType == typeof(object) ||
                parameterBindingFactories.FindFactory(propertyInfo.PropertyType, propertyInfo.Name) != null)
            {
                return(null);
            }

            return(targetType);
        }
Ejemplo n.º 6
0
 /// <summary>
 ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
 ///     directly from your code. This API may change or be removed in future releases.
 /// </summary>
 public InversePropertyAttributeConvention(
     [NotNull] ICoreTypeMapper typeMapper,
     [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
     : base(typeMapper)
 {
     _logger = logger;
 }
Ejemplo n.º 7
0
 /// <summary>
 ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
 ///     directly from your code. This API may change or be removed in future releases.
 /// </summary>
 public InversePropertyAttributeConvention(
     [NotNull] ICoreTypeMapper typeMapper,
     [NotNull] IParameterBindingFactories parameterBindingFactories,
     [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
     : base(typeMapper, parameterBindingFactories)
 {
     _logger = logger;
 }
Ejemplo n.º 8
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public ForeignKeyAttributeConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
            _logger     = logger;
        }
Ejemplo n.º 9
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public RelationshipDiscoveryConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            _typeMapper = typeMapper;
            _logger     = logger;
        }
Ejemplo n.º 10
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public PropertyMappingValidationConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IParameterBindingFactories parameterBindingFactories)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(parameterBindingFactories, nameof(parameterBindingFactories));

            _typeMapper = typeMapper;
            _parameterBindingFactories = parameterBindingFactories;
        }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public ServicePropertyDiscoveryConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IParameterBindingFactories parameterBindingFactories)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(parameterBindingFactories, nameof(parameterBindingFactories));

            _typeMapper = typeMapper;
            _parameterBindingFactories = parameterBindingFactories;
        }
Ejemplo n.º 12
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        protected NavigationAttributeEntityTypeConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IParameterBindingFactories parameterBindingFactories)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(parameterBindingFactories, nameof(parameterBindingFactories));

            _typeMapper = typeMapper;
            _parameterBindingFactories = parameterBindingFactories;
        }
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public RelationshipDiscoveryConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IParameterBindingFactories parameterBindingFactories,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(parameterBindingFactories, nameof(parameterBindingFactories));

            _typeMapper = typeMapper;
            _parameterBindingFactories = parameterBindingFactories;
            _logger = logger;
        }
Ejemplo n.º 14
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public ForeignKeyAttributeConvention(
            [NotNull] ICoreTypeMapper typeMapper,
            [NotNull] IParameterBindingFactories parameterBindingFactories,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(parameterBindingFactories, nameof(parameterBindingFactories));

            _typeMapper = typeMapper;
            _parameterBindingFactories = parameterBindingFactories;
            _logger = logger;
        }
Ejemplo n.º 15
0
        /// <summary>
        ///     <para>
        ///         Creates the service dependencies parameter object for a <see cref="CoreConventionSetBuilder" />.
        ///     </para>
        ///     <para>
        ///         Do not call this constructor directly from either provider or application code as it may change
        ///         as new dependencies are added. Instead, use this type in your constructor so that an instance
        ///         will be created and injected automatically by the dependency injection container. To create
        ///         an instance with some dependent services replaced, first resolve the object from the dependency
        ///         injection container, then replace selected services using the 'With...' methods. Do not call
        ///         the constructor at any point in this process.
        ///     </para>
        ///     <para>
        ///         This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///         directly from your code. This API may change or be removed in future releases.
        ///     </para>
        /// </summary>
        public CoreConventionSetBuilderDependencies(
            [NotNull] ICoreTypeMapper typeMapper,
            [CanBeNull] IConstructorBindingFactory constructorBindingFactory,
            [CanBeNull] IDiagnosticsLogger <DbLoggerCategory.Model> logger,
            [CanBeNull] ITypeMapper _ = null) // Only needed for D.I. to resolve this constructor
        {
            Check.NotNull(typeMapper, nameof(typeMapper));

            TypeMapper = typeMapper;
            ConstructorBindingFactory = constructorBindingFactory ?? new ConstructorBindingFactory();
            Logger = logger
                     ?? new DiagnosticsLogger <DbLoggerCategory.Model>(new LoggerFactory(), new LoggingOptions(), new DiagnosticListener(""));
        }
 /// <summary>
 ///     Clones this dependency parameter object with one service replaced.
 /// </summary>
 /// <param name="typeMapper"> A replacement for the current dependency of this type. </param>
 /// <returns> A new parameter object with the given service replaced. </returns>
 public CoreConventionSetBuilderDependencies With([NotNull] ICoreTypeMapper typeMapper)
 => new CoreConventionSetBuilderDependencies(typeMapper, ConstructorBindingFactory, ParameterBindingFactories, Logger);