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().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 Apply_should_order_by_annotation_if_given() { 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); var columnB = new EdmProperty( "Id", ProviderRegistry.Sql2008_ProviderManifest.GetStoreType( TypeUsage.Create(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String)))); columnB.SetOrder(1); table.AddColumn(columnB); 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("Id", table.Properties.First().Name); }
private IEnumerable <EdmProperty> GenerateIndependentForeignKeyColumns( EntityType principalEntityType, EntityType dependentEntityType, AssociationSetMapping associationSetMapping, EndPropertyMapping associationEndMapping, EntityType dependentTable, bool isPrimaryKeyColumn, NavigationProperty principalNavigationProperty) { foreach (EdmProperty keyProperty in principalEntityType.KeyProperties()) { string columnName = (principalNavigationProperty != null ? principalNavigationProperty.Name : principalEntityType.Name) + "_" + keyProperty.Name; EdmProperty foreignKeyColumn = this.MapTableColumn(keyProperty, columnName, false); dependentTable.AddColumn(foreignKeyColumn); if (isPrimaryKeyColumn) { dependentTable.AddKeyMember((EdmMember)foreignKeyColumn); } foreignKeyColumn.Nullable = associationEndMapping.AssociationEnd.IsOptional() || associationEndMapping.AssociationEnd.IsRequired() && dependentEntityType.BaseType != null; foreignKeyColumn.StoreGeneratedPattern = StoreGeneratedPattern.None; yield return(foreignKeyColumn); associationEndMapping.AddPropertyMapping(new ScalarPropertyMapping(keyProperty, foreignKeyColumn)); if (foreignKeyColumn.Nullable) { associationSetMapping.AddCondition((ConditionPropertyMapping) new IsNullConditionMapping(foreignKeyColumn, false)); } } }
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)); }
private IEnumerable <EdmProperty> GenerateIndependentForeignKeyColumns( EntityType principalEntityType, EntityType dependentEntityType, StorageAssociationSetMapping associationSetMapping, StorageEndPropertyMapping 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.EndMember.IsOptional() || (associationEndMapping.EndMember.IsRequired() && dependentEntityType.BaseType != null); foreignKeyColumn.StoreGeneratedPattern = StoreGeneratedPattern.None; yield return(foreignKeyColumn); associationEndMapping.AddProperty(new StorageScalarPropertyMapping(property, foreignKeyColumn)); if (foreignKeyColumn.Nullable) { associationSetMapping .AddColumnCondition(new StorageConditionPropertyMapping(null, foreignKeyColumn, null, 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); }