public void MaxBatchSize_is_optional()
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlServer("Database=Crunchie");

            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <SqlServerTypeMapper>());


            var factory = new SqlServerModificationCommandBatchFactory(
                new RelationalCommandBuilderFactory(
                    new FakeDiagnosticsLogger <DbLoggerCategory.Database.Command>(),
                    typeMapper),
                new SqlServerSqlGenerationHelper(
                    new RelationalSqlGenerationHelperDependencies()),
                new SqlServerUpdateSqlGenerator(
                    new UpdateSqlGeneratorDependencies(
                        new SqlServerSqlGenerationHelper(
                            new RelationalSqlGenerationHelperDependencies()),
                        typeMapper)),
                new UntypedRelationalValueBufferFactoryFactory(
                    new RelationalValueBufferFactoryDependencies(
                        typeMapper)),
                optionsBuilder.Options);

            var batch = factory.Create();

            Assert.True(batch.AddCommand(new ModificationCommand("T1", null, new ParameterNameGenerator().GenerateNext, false, null)));
            Assert.True(batch.AddCommand(new ModificationCommand("T1", null, new ParameterNameGenerator().GenerateNext, false, null)));
        }
        public void AddCommand_returns_false_when_max_batch_size_is_reached()
        {
            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <SqlServerTypeMapper>());

            var batch = new SqlServerModificationCommandBatch(
                new RelationalCommandBuilderFactory(
                    new FakeDiagnosticsLogger <DbLoggerCategory.Database.Command>(),
                    typeMapper),
                new SqlServerSqlGenerationHelper(
                    new RelationalSqlGenerationHelperDependencies()),
                new SqlServerUpdateSqlGenerator(
                    new UpdateSqlGeneratorDependencies(
                        new SqlServerSqlGenerationHelper(
                            new RelationalSqlGenerationHelperDependencies()),
                        typeMapper)),
                new UntypedRelationalValueBufferFactoryFactory(
                    new RelationalValueBufferFactoryDependencies(
                        typeMapper)),
                1);

            Assert.True(
                batch.AddCommand(
                    new ModificationCommand("T1", null, new ParameterNameGenerator().GenerateNext, false, null)));
            Assert.False(
                batch.AddCommand(
                    new ModificationCommand("T1", null, new ParameterNameGenerator().GenerateNext, false, null)));
        }
        public void Can_add_type_mapped_parameter_by_property(bool nullable)
        {
            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <FakeRelationalTypeMapper>());

            var property = new Model().AddEntityType("MyType").AddProperty("MyProp", typeof(string));

            property.IsNullable = nullable;
            property[CoreAnnotationNames.TypeMapping] = GetMapping(typeMapper, property);

            var parameterBuilder = new RelationalParameterBuilder(typeMapper);

            parameterBuilder.AddParameter(
                "InvariantName",
                "Name",
                property);

            Assert.Equal(1, parameterBuilder.Parameters.Count);

            var parameter = parameterBuilder.Parameters[0] as TypeMappedRelationalParameter;

            Assert.NotNull(parameter);
            Assert.Equal("InvariantName", parameter.InvariantName);
            Assert.Equal("Name", parameter.Name);
            Assert.Equal(GetMapping(typeMapper, property), parameter.RelationalTypeMapping);
            Assert.Equal(nullable, parameter.IsNullable);
        }
        public void Can_add_composite_parameter()
        {
            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <FakeRelationalTypeMapper>());

            var parameterBuilder = new RelationalParameterBuilder(typeMapper);

            parameterBuilder.AddCompositeParameter(
                "CompositeInvariant",
                builder =>
            {
                builder.AddParameter(
                    "FirstInvariant",
                    "FirstName",
                    new IntTypeMapping("int", DbType.Int32),
                    nullable: false);

                builder.AddParameter(
                    "SecondInvariant",
                    "SecondName",
                    new StringTypeMapping("nvarchar(max)"),
                    nullable: true);
            });

            Assert.Equal(1, parameterBuilder.Parameters.Count);

            var parameter = parameterBuilder.Parameters[0] as CompositeRelationalParameter;

            Assert.NotNull(parameter);
            Assert.Equal("CompositeInvariant", parameter.InvariantName);
            Assert.Equal(2, parameter.RelationalParameters.Count);
        }
Exemplo n.º 5
0
        public virtual void GenerateSqlLiteralValue_returns_NonUnicode_String_literal()
        {
            var mapping = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <SqlServerTypeMapper>())
                          .FindMapping("varchar(max)");

            var literal = mapping.GenerateSqlLiteral("A Non-Unicode String");

            Assert.Equal("'A Non-Unicode String'", literal);
        }
        public void Does_not_add_empty_composite_parameter()
        {
            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <FakeRelationalTypeMapper>());

            var parameterBuilder = new RelationalParameterBuilder(typeMapper);

            parameterBuilder.AddCompositeParameter(
                "CompositeInvariant",
                builder => { });

            Assert.Equal(0, parameterBuilder.Parameters.Count);
        }
        public static ConventionSet Build()
        {
            var coreTypeMapperDependencies = new CoreTypeMapperDependencies(
                new ValueConverterSelector(
                    new ValueConverterSelectorDependencies()));

            var oracleTypeMapper = new OracleTypeMapper(
                new RelationalTypeMapperDependencies());

            var convertingMapper = new FallbackRelationalCoreTypeMapper(
                coreTypeMapperDependencies,
                new RelationalTypeMapperDependencies(),
                oracleTypeMapper);

            return(new OracleConventionSetBuilder(
                       new RelationalConventionSetBuilderDependencies(convertingMapper, null, null, null))
                   .AddConventions(
                       new CoreConventionSetBuilder(
                           new CoreConventionSetBuilderDependencies(convertingMapper, null, null, null))
                       .CreateConventionSet()));
        }
        public void Can_add_dynamic_parameter()
        {
            var typeMapper = new FallbackRelationalCoreTypeMapper(
                TestServiceFactory.Instance.Create <CoreTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMapperDependencies>(),
                TestServiceFactory.Instance.Create <FakeRelationalTypeMapper>());

            var parameterBuilder = new RelationalParameterBuilder(typeMapper);

            parameterBuilder.AddParameter(
                "InvariantName",
                "Name");

            Assert.Equal(1, parameterBuilder.Parameters.Count);

            var parameter = parameterBuilder.Parameters[0] as DynamicRelationalParameter;

            Assert.NotNull(parameter);
            Assert.Equal("InvariantName", parameter.InvariantName);
            Assert.Equal("Name", parameter.Name);
        }
Exemplo 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 static ConventionSet Build()
        {
            var coreTypeMapperDependencies = new CoreTypeMapperDependencies(
                new ValueConverterSelector(
                    new ValueConverterSelectorDependencies()));

            var sqlServerTypeMapper = new SqlServerTypeMapper(
                new RelationalTypeMapperDependencies());

            var convertingTypeMapper = new FallbackRelationalCoreTypeMapper(
                coreTypeMapperDependencies,
                new RelationalTypeMapperDependencies(),
                sqlServerTypeMapper);

            return(new SqlServerConventionSetBuilder(
                       new RelationalConventionSetBuilderDependencies(convertingTypeMapper, null, null, null),
                       new SqlServerSqlGenerationHelper(new RelationalSqlGenerationHelperDependencies()))
                   .AddConventions(
                       new CoreConventionSetBuilder(
                           new CoreConventionSetBuilderDependencies(convertingTypeMapper, null, null))
                       .CreateConventionSet()));
        }