public virtual void Passes_for_compatible_duplicate_column_names_within_hierarchy() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>( eb => { eb.Ignore(e => e.Type); eb.Property(c => c.Breed).HasMaxLength(25); eb.Property(c => c.Breed).HasColumnName("BreedName"); eb.Property(c => c.Breed).HasDefaultValue("None"); eb.Property <bool>("Selected").HasDefaultValue(false); }); modelBuilder.Entity <Dog>( eb => { eb.Ignore(e => e.Type); eb.Property(c => c.Breed).HasMaxLength(25); eb.Property(c => c.Breed).HasColumnName("BreedName"); eb.Property(c => c.Breed).HasDefaultValue("None"); eb.Property <bool>("Selected").HasDefaultValue(false); }); Validate(modelBuilder.Model); }
private static IModel BuildModel(bool generateKeyValues, bool computeNonKeyValue) { IMutableModel model = new Model(TestRelationalConventionSetBuilder.Build()); var entityType = model.AddEntityType(typeof(T1)); var key = entityType.FindProperty("Id"); key.ValueGenerated = generateKeyValues ? ValueGenerated.OnAdd : ValueGenerated.Never; key.SetColumnName("Col1"); entityType.SetPrimaryKey(key); var nonKey1 = entityType.FindProperty("Name1"); nonKey1.IsConcurrencyToken = computeNonKeyValue; nonKey1.SetColumnName("Col2"); nonKey1.ValueGenerated = computeNonKeyValue ? ValueGenerated.OnAddOrUpdate : ValueGenerated.Never; var nonKey2 = entityType.FindProperty("Name2"); nonKey2.IsConcurrencyToken = computeNonKeyValue; nonKey2.SetColumnName("Col3"); nonKey2.ValueGenerated = computeNonKeyValue ? ValueGenerated.OnUpdate : ValueGenerated.Never; return(model.FinalizeModel()); }
public void Passes_for_non_key_identity() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Dog>().Property(c => c.Type).UseSqlServerIdentityColumn(); Validate(modelBuilder.Model); }
public void Detects_nullable_byte_identity_column() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Dog>().Property <byte?>("Bite").UseSqlServerIdentityColumn(); VerifyWarning(SqlServerStrings.LogByteIdentityColumn.GenerateMessage("Bite", nameof(Dog)), modelBuilder.Model); }
public void Detects_sequences() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.HasSequence("Fibonacci"); VerifyWarning(SqliteStrings.SequenceConfigured("Fibonacci"), modelBuilder.Model); }
public virtual void Detects_default_decimal_mapping() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>().Property <decimal>("Price"); VerifyWarning(OracleStrings.LogDefaultDecimalTypeColumn.GenerateMessage("Price", nameof(Animal)), modelBuilder.Model); }
public void Detects_schemas() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>().ToTable("Animals", "pet"); VerifyWarning(SqliteStrings.SchemaConfigured("Animal", "pet"), modelBuilder.Model); }
public void Throws_for_non_key_SequenceHiLo() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Dog>().Property(c => c.Type).ForSqlServerUseSequenceHiLo(); VerifyError(SqlServerStrings.NonKeyValueGeneration(nameof(Dog.Type), nameof(Dog)), modelBuilder.Model); }
public virtual void Detects_default_nullable_decimal_mapping() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>().Property <decimal?>("Price"); VerifyWarning(SqlServerStrings.DefaultDecimalTypeColumn("Price", nameof(Animal)), modelBuilder.Model); }
public void Detects_nullable_byte_identity_column() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Dog>().Property <byte?>("Bite").UseSqlServerIdentityColumn(); VerifyError(SqlServerStrings.NonKeyValueGeneration("Bite", nameof(Dog)), modelBuilder.Model); }
public void TableAttribute_sets_column_name_order_and_type_with_conventional_builder() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); var entityBuilder = modelBuilder.Entity <A>(); Assert.Equal("MyTable", entityBuilder.Metadata.Relational().TableName); Assert.Equal("MySchema", entityBuilder.Metadata.Relational().Schema); }
public void Throws_for_multiple_identity_properties() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Dog>().Property(c => c.Type).UseSqlServerIdentityColumn(); modelBuilder.Entity <Dog>().Property <int?>("Tag").UseSqlServerIdentityColumn(); VerifyError(SqlServerStrings.MultipleIdentityColumns("'Dog.Tag', 'Dog.Type'", nameof(Dog)), modelBuilder.Model); }
public void Passes_for_non_key_SequenceHiLo_on_model() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.ForSqlServerUseSequenceHiLo(); modelBuilder.Entity <Dog>().Property(c => c.Type).ValueGeneratedOnAdd(); Validate(modelBuilder.Model); }
public void ColumnAttribute_on_field_sets_column_name_and_type_with_conventional_builder() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); var entityBuilder = modelBuilder.Entity <F>(); Assert.Equal("Post Name", entityBuilder.Property <string>(nameof(F.Name)).Metadata.Relational().ColumnName); Assert.Equal("DECIMAL", entityBuilder.Property <string>(nameof(F.Name)).Metadata.Relational().ColumnType); }
public override void Detects_duplicate_column_names() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>().Property(b => b.Id).HasColumnName("Name"); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch(nameof(Animal), nameof(Animal.Id), nameof(Animal), nameof(Animal.Name), "Name", nameof(Animal), "NUMBER(10)", "NVARCHAR2(2000)"), modelBuilder.Model); }
public override void Detects_duplicate_column_names() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>().Property(b => b.Id).ForSqlServerHasColumnName("Name"); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch(nameof(Animal), nameof(Animal.Id), nameof(Animal), nameof(Animal.Name), "Name", nameof(Animal), "int", "nvarchar(max)"), modelBuilder.Model); }
public void Passes_for_non_key_identity_on_model() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.ForSqlServerUseIdentityColumns(); modelBuilder.Entity <Dog>().Property(c => c.Id).ValueGeneratedNever(); modelBuilder.Entity <Dog>().Property(c => c.Type).ValueGeneratedOnAdd(); Validate(modelBuilder.Model); }
public virtual void Detects_duplicate_column_names_within_hierarchy_with_different_nullability() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>(); modelBuilder.Entity <Dog>().Property(d => d.Type).HasColumnName("Id"); VerifyError(RelationalStrings.DuplicateColumnNameNullabilityMismatch( nameof(Animal), nameof(Animal.Id), nameof(Dog), nameof(Dog.Type), nameof(Animal.Id), nameof(Animal)), modelBuilder.Model); }
public virtual void Detects_duplicate_column_names_within_hierarchy_with_different_DefaultValueSql() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().Property(c => c.Breed).HasDefaultValueSql("1"); modelBuilder.Entity <Dog>(); VerifyError(RelationalStrings.DuplicateColumnNameDefaultSqlMismatch( nameof(Cat), nameof(Cat.Breed), nameof(Dog), nameof(Dog.Breed), nameof(Cat.Breed), nameof(Animal), "1", ""), modelBuilder.Model); }
public virtual void Detects_duplicate_columns_in_derived_types_with_different_types() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().Property(c => c.Type); modelBuilder.Entity <Dog>().Property(c => c.Type); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch( nameof(Cat), nameof(Cat.Type), nameof(Dog), nameof(Dog.Type), nameof(Cat.Type), nameof(Animal), "just_string(2000)", "default_int_mapping"), modelBuilder.Model); }
public virtual void Detects_duplicate_column_names_within_hierarchy_with_different_unicode() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().Ignore(e => e.Type).Property(c => c.Breed).IsUnicode(false); modelBuilder.Entity <Dog>().Ignore(e => e.Type).Property(d => d.Breed).IsUnicode(); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch( nameof(Cat), nameof(Cat.Breed), nameof(Dog), nameof(Dog.Breed), nameof(Cat.Breed), nameof(Animal), "varchar(max)", "nvarchar(max)"), modelBuilder.Model); }
public virtual void Detects_duplicate_column_names_within_hierarchy_with_different_MaxLength() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().Property(c => c.Breed).HasMaxLength(30); modelBuilder.Entity <Dog>().Property(d => d.Breed).HasMaxLength(15); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch( nameof(Cat), nameof(Cat.Breed), nameof(Dog), nameof(Dog.Breed), nameof(Cat.Breed), nameof(Animal), "just_string(30)", "just_string(15)"), modelBuilder.Model); }
public override void Detects_duplicate_columns_in_derived_types_with_different_types() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().Property(c => c.Type); modelBuilder.Entity <Dog>().Property(c => c.Type); VerifyError(RelationalStrings.DuplicateColumnNameDataTypeMismatch( typeof(Cat).Name, "Type", typeof(Dog).Name, "Type", "Type", nameof(Animal), "TEXT", "INTEGER"), modelBuilder.Model); }
public virtual void Passes_for_incompatible_indexes_within_hierarchy_when_one_name_configured_explicitly() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); var index1 = modelBuilder.Entity <Cat>().HasIndex(c => c.Name).IsUnique().HasName("IX_Animal_Name").Metadata; var index2 = modelBuilder.Entity <Dog>().HasIndex(d => d.Name).IsUnique(false).Metadata; Validate(modelBuilder.Model); Assert.Equal("IX_Animal_Name", index1.Relational().Name); Assert.Equal("IX_Animal_Name0", index2.Relational().Name); }
public virtual void Passes_for_compatible_duplicate_index_names_within_hierarchy() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); var index1 = modelBuilder.Entity <Cat>().HasIndex(c => c.Breed).Metadata; var index2 = modelBuilder.Entity <Dog>().HasIndex(c => c.Breed).Metadata; Validate(modelBuilder.Model); Assert.NotSame(index1, index2); Assert.Equal(index1.Relational().Name, index2.Relational().Name); }
public virtual void Does_not_detect_missing_discriminator_value_for_abstract_class() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Abstract>(); modelBuilder.Entity <A>().HasDiscriminator <byte>("ClassType") .HasValue <A>(0) .HasValue <C>(1) .HasValue <D>(2) .HasValue <Generic <string> >(3); Validate(modelBuilder.Model); }
public virtual void Detects_duplicate_discriminator_values() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <A>().HasDiscriminator <byte>("ClassType") .HasValue <A>(1) .HasValue <C>(1) .HasValue <D>(2); var model = modelBuilder.Model; VerifyError(RelationalStrings.DuplicateDiscriminatorValue(typeof(C).Name, 1, typeof(A).Name), model); }
public virtual void Detects_missing_non_string_discriminator_values() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <C>(); modelBuilder.Entity <A>().HasDiscriminator <byte>("ClassType") .HasValue <A>(0) .HasValue <D>(1); var model = modelBuilder.Model; VerifyError(RelationalStrings.NoDiscriminatorValue(typeof(C).Name), model); }
public virtual void Detects_duplicate_foreignKey_names_within_hierarchy_with_different_uniqueness() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().HasOne <Person>().WithMany().HasForeignKey(c => c.Name).HasPrincipalKey(p => p.Name); modelBuilder.Entity <Dog>().HasOne <Person>().WithOne().HasForeignKey <Dog>(d => d.Name).HasPrincipalKey <Person>(p => p.Name); VerifyError(RelationalStrings.DuplicateForeignKeyUniquenessMismatch( "{'" + nameof(Dog.Name) + "'}", nameof(Dog), "{'" + nameof(Cat.Name) + "'}", nameof(Cat), nameof(Animal), "FK_Animal_Person_Name"), modelBuilder.Model); }
public virtual void Detects_duplicate_index_names_within_hierarchy_with_different_uniqueness() { var modelBuilder = new ModelBuilder(TestRelationalConventionSetBuilder.Build()); modelBuilder.Entity <Animal>(); modelBuilder.Entity <Cat>().HasIndex(c => c.Name).IsUnique(); modelBuilder.Entity <Dog>().HasIndex(d => d.Name).IsUnique(false); VerifyError(RelationalStrings.DuplicateIndexUniquenessMismatch( "{'" + nameof(Dog.Name) + "'}", nameof(Dog), "{'" + nameof(Cat.Name) + "'}", nameof(Cat), nameof(Animal), "IX_Animal_Name"), modelBuilder.Model); }