public void GetEntitySets_should_return_all_sets() { var model = new EdmModel(DataSpace.CSpace); model.AddEntitySet("S", new EntityType("E", "N", DataSpace.CSpace)); model.AddEntitySet("T", new EntityType("E", "N", DataSpace.CSpace)); Assert.Equal(2, model.GetEntitySets().Count()); }
internal override void Configure( AssociationSetMapping associationSetMapping, EdmModel database, PropertyInfo navigationProperty) { DebugCheck.NotNull(associationSetMapping); DebugCheck.NotNull(navigationProperty); // By convention source end contains the dependent column mappings var propertyMappings = associationSetMapping.SourceEndMapping.PropertyMappings.ToList(); if (_tableName != null) { var targetTable = ((from t in database.EntityTypes let n = t.GetTableName() where (n != null && n.Equals(_tableName)) select t) .SingleOrDefault()) ?? (from es in database.GetEntitySets() where string.Equals(es.Table, _tableName.Name, StringComparison.Ordinal) select es.ElementType).SingleOrDefault(); if (targetTable == null) { throw Error.TableNotFound(_tableName); } var sourceTable = associationSetMapping.Table; if (sourceTable != targetTable) { var foreignKeyConstraint = sourceTable.ForeignKeyBuilders .Single(fk => fk.DependentColumns.SequenceEqual(propertyMappings.Select(pm => pm.Column))); sourceTable.RemoveForeignKey(foreignKeyConstraint); targetTable.AddForeignKey(foreignKeyConstraint); foreignKeyConstraint.DependentColumns .Each( c => { var isKey = c.IsPrimaryKeyColumn; sourceTable.RemoveMember(c); targetTable.AddMember(c); if (isKey) { targetTable.AddKeyMember(c); } }); associationSetMapping.StoreEntitySet = database.GetEntitySet(targetTable); } } if ((_keyColumnNames.Count > 0) && (_keyColumnNames.Count != propertyMappings.Count())) { throw Error.IncorrectColumnCount(string.Join(", ", _keyColumnNames)); } _keyColumnNames.Each((n, i) => propertyMappings[i].Column.Name = n); foreach (var annotation in _annotations) { var index = _keyColumnNames.IndexOf(annotation.Key.Item1); if (index == -1) { throw new InvalidOperationException(Strings.BadKeyNameForAnnotation(annotation.Key.Item1, annotation.Key.Item2)); } propertyMappings[index].Column.AddAnnotation( XmlConstants.CustomAnnotationPrefix + annotation.Key.Item2, annotation.Value); } }
private void ConfigureEntitySetName(EntityType entityType, EdmModel model) { DebugCheck.NotNull(entityType); DebugCheck.NotNull(model); if ((EntitySetName == null) || (entityType.BaseType != null)) { return; } var entitySet = model.GetEntitySet(entityType); Debug.Assert(entitySet != null); entitySet.Name = model.GetEntitySets().Except(new[] { entitySet }).UniquifyName(EntitySetName); entitySet.SetConfiguration(this); }