public void Apply_should_sort_unannotated_in_given_order() { var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); table.AddColumn( new EdmProperty( "C", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); table.AddColumn( new EdmProperty( "Id", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); var database = new EdmModel().Initialize(); database.AddEntitySet("ES", table); ((IDbConvention<EntityType>)new ColumnOrderingConvention()).Apply(table, database); Assert.Equal(2, table.Properties.Count); Assert.Equal("C", table.Properties.First().Name); }
public void AddColumn_should_set_properties_and_add_to_columns() { var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var tableColumn = new EdmProperty( "Foo", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)))); table.AddColumn(tableColumn); Assert.NotNull(tableColumn); Assert.Equal("Foo", tableColumn.Name); Assert.True(table.Properties.Contains(tableColumn)); }
public void Apply_should_sort_annotated_before_unannotated() { var table = new EntityType("T", XmlConstants.TargetNamespace_3, DataSpace.SSpace); var columnA = new EdmProperty( "C", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)))); columnA.SetOrder(2); table.AddColumn(columnA); table.AddColumn( new EdmProperty( "Id", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String))))); var database = new EdmModel(DataSpace.CSpace); database.AddEntitySet("ES", table); (new ColumnOrderingConvention()).Apply(table, new DbModel(null, database)); Assert.Equal(2, table.Properties.Count); Assert.Equal("C", table.Properties.First().Name); }
private IEnumerable<EdmProperty> GenerateIndependentForeignKeyColumns( EntityType principalEntityType, EntityType dependentEntityType, AssociationSetMapping associationSetMapping, EndPropertyMapping associationEndMapping, EntityType dependentTable, bool isPrimaryKeyColumn, NavigationProperty principalNavigationProperty) { DebugCheck.NotNull(principalEntityType); DebugCheck.NotNull(associationEndMapping); DebugCheck.NotNull(dependentTable); foreach (var property in principalEntityType.KeyProperties()) { var columnName = ((principalNavigationProperty != null) ? principalNavigationProperty.Name : principalEntityType.Name) + "_" + property.Name; var foreignKeyColumn = MapTableColumn(property, columnName, false); dependentTable.AddColumn(foreignKeyColumn); if (isPrimaryKeyColumn) { dependentTable.AddKeyMember(foreignKeyColumn); } foreignKeyColumn.Nullable = associationEndMapping.AssociationEnd.IsOptional() || (associationEndMapping.AssociationEnd.IsRequired() && dependentEntityType.BaseType != null); foreignKeyColumn.StoreGeneratedPattern = StoreGeneratedPattern.None; yield return foreignKeyColumn; associationEndMapping.AddPropertyMapping(new ScalarPropertyMapping(property, foreignKeyColumn)); if (foreignKeyColumn.Nullable) { associationSetMapping .AddCondition(new IsNullConditionMapping(foreignKeyColumn, false)); } } }
private static AssociationSetMapping CreateIAMapping(EdmModel database, EntityType dependentTable) { var fkColumn = new EdmProperty( "FK", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)))); dependentTable.AddColumn(fkColumn); var foreignKeyConstraint = new ForeignKeyBuilder(database, "FK") { PrincipalTable = database.AddTable("P") }; dependentTable.AddForeignKey(foreignKeyConstraint); foreignKeyConstraint.DependentColumns = new[] { fkColumn }; var associationSetMapping = new AssociationSetMapping( new AssociationSet("AS", new AssociationType("A", XmlConstants.ModelNamespace_3, false, DataSpace.CSpace)), database.GetEntitySet(dependentTable)).Initialize(); associationSetMapping.SourceEndMapping.AddPropertyMapping(new ScalarPropertyMapping(new EdmProperty("PK"), fkColumn)); return associationSetMapping; }