public void WhenTableIsForeignKeyTable_ShouldReturnNavigationProperty() { //Arrange ISchemaTable table = new SqlSchemaTable( schema: "dbo", name : "SagaMessage", isView: false); ISchemaForeignKey foreignKey = new SqlSchemaForeignKey( foreignKeySchema : "dbo", foreignKeyTableName: "SagaMessage", foreignKeyColumn : "SagaId", primaryKeySchema : "dbo", primaryKeyTableName: "Saga", primaryKeyColumn : "SagaId", constraintName : "FK_SagaMessage_Saga_SagaId"); AutoFaker.Provide(table); AutoFaker.Provide(foreignKey); AutoFaker.Provide<INavigationPropertyInfoAdapter, NavigationPropertyInfoAdapter>(); A.CallTo(() => AutoFaker.Resolve<IReverseEngineeringConfiguration>().Pluralize).Returns(true); //Act var result = AutoFaker.Resolve<INavigationPropertyInfoAdapter>().GetPropertyText(); //Assert result.ShouldBeEquivalentTo( "public virtual Saga Saga { get; set; } // FK_SagaMessage_Saga_SagaId"); }
public void WhenTableNameIsValid_ShouldReturnMap() { //Arrange; var table = new SqlSchemaTable("Saga", "dbo", false); var provider = AdapterFactory.Create(table, null); //Act var result = provider.GetTableMappingText(); //Assert result.ShouldBeEquivalentTo(@"this.ToTable(""Saga"");"); }
private IReadOnlyList<ISchemaTable> InternalRead(SqlConnection connection) { var foreignKeys = this.LoadForeignKeySchemas(connection).ToList(); var tables = new List<SqlSchemaTable>(); using(var cmd = connection.CreateCommand()) { cmd.CommandText = TablesSchemaSql; SqlSchemaTable table = null; using(var reader = cmd.ExecuteReader()) { while(reader.Read()) { var tableName = reader["TableName"].ToString().Trim(); var schemaName = reader["SchemaName"].ToString().Trim(); //create table if one was not created before, and add the foreign keys plus the related keys if(table == null || !table.Schema.Equals(schemaName) || !table.Name.Equals(tableName)) { table = new SqlSchemaTable( tableName, schemaName, bool.Parse(reader["IsView"].ToString())); table.ForeignKeys.AddRange( foreignKeys.Where( key => key.ForeignKeySchema.Equals(table.Schema) && key.ForeignKeyTableName.Equals(table.Name) || key.PrimaryKeySchema.Equals(table.Schema) && key.PrimaryKeyTableName.Equals(table.Name))); tables.Add(table); } var columnSchema = new SqlSchemaColumn( reader["ColumnName"].ToString().Trim(), reader["TypeName"].ToString().Trim(), this.GetPropertyTypeFromSqlType(reader["TypeName"].ToString().Trim()), (int) reader["DateTimePrecision"], reader["DefaultValue"].ToString().Trim(), (int) reader["MaxLength"], (int) reader["Precision"], (int) reader["Scale"], (int) reader["Ordinal"], reader["IsIdentity"].ToString().Trim().ToLower() == "true", reader["IsNullable"].ToString().Trim().ToLower() == "true", reader["IsPrimaryKey"].ToString().Trim().ToLower() == "true", reader["IsStoreGenerated"].ToString().Trim().ToLower() == "true"); table.Columns.Add(columnSchema); } } } return tables.AsReadOnly(); }
public void WhenTableIsForeignKeyTable_ShouldReturnMap() { //Arrange ISchemaTable table = new SqlSchemaTable( schema: "dbo", name : "SagaMessage", isView: false); ISchemaForeignKey foreignKey = new SqlSchemaForeignKey( foreignKeySchema : "dbo", foreignKeyTableName: "SagaMessage", foreignKeyColumn : "SagaId", primaryKeySchema : "dbo", primaryKeyTableName: "Saga", primaryKeyColumn : "SagaId", constraintName : "FK_SagaMessage_Saga_SagaId"); AutoFaker.Provide(table); AutoFaker.Provide(foreignKey); AutoFaker.Provide<INavigationPropertyInfoAdapter, NavigationPropertyInfoAdapter>(); A.CallTo(() => AutoFaker.Resolve<IReverseEngineeringConfiguration>().Pluralize).Returns(true); //Act var result = AutoFaker.Resolve<INavigationPropertyInfoAdapter>().GetMapppingText(); //Assert result.ShouldBeEquivalentTo( @"HasRequired(a => a.Saga).WithMany(b => b.SagaMessages).HasForeignKey(c => c.SagaId); // FK_SagaMessage_Saga_SagaId"); }