public void MaxBatchSize_is_optional() { var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlServer("Database=Crunchie"); var typeMapper = new FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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 TypedRelationalValueBufferFactoryFactory( 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 Can_add_type_mapped_parameter_by_property(bool nullable) { var typeMapper = new FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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 FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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); }
public void AddCommand_returns_false_when_max_batch_size_is_reached() { var typeMapper = new FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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 TypedRelationalValueBufferFactoryFactory( 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 virtual void GenerateSqlLiteralValue_returns_NonUnicode_String_literal() { var mapping = new FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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 FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <FakeRelationalTypeMapper>()); var parameterBuilder = new RelationalParameterBuilder(typeMapper); parameterBuilder.AddCompositeParameter( "CompositeInvariant", builder => { }); Assert.Equal(0, parameterBuilder.Parameters.Count); }
public void Can_add_dynamic_parameter() { var typeMapper = new FallbackRelationalTypeMappingSource( TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(), TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(), 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); }