// internal for testing internal void CreateEntitySets( IEnumerable<TableDetailsRow> tableDetailsRows, EntityRegister entityRegister, IList<EntitySet> entitySetsForReadOnlyEntityTypes, DbObjectType objectType) { Debug.Assert(tableDetailsRows != null, "tableDetailsRows != null"); Debug.Assert(entityRegister != null, "entityRegister != null"); Debug.Assert(entitySetsForReadOnlyEntityTypes != null, "entitySetsForReadOnlyEntityTypes != null"); Debug.Assert( objectType == DbObjectType.Table || objectType == DbObjectType.View, "Unexpected object type - only tables and views are supported"); foreach (var tableDetailsRowsForTable in SplitRows(tableDetailsRows)) { var firstRow = tableDetailsRowsForTable[0]; bool needsDefiningQuery; var entityType = CreateEntityType(tableDetailsRowsForTable, out needsDefiningQuery); entityRegister.AddEntityType(firstRow.GetMostQualifiedTableName(), entityType); // skip EntitySet creation for invalid entity types. We still need the types themselves - they // will be written to the ssdl in comments for informational and debugging purposes. if (!MetadataItemHelper.IsInvalid(entityType)) { var entitySet = EntitySet.Create( entityType.Name, !firstRow.IsSchemaNull() ? firstRow.Schema : null, firstRow.TableName != entityType.Name ? firstRow.TableName : null, null, entityType, new[] { CreateStoreModelBuilderMetadataProperty( TypeAttributeName, objectType == DbObjectType.Table ? TablesTypeAttributeValue : ViewsTypeAttributeValue) }); if (needsDefiningQuery) { entitySetsForReadOnlyEntityTypes.Add(entitySet); } else { entityRegister.AddEntitySet(entitySet); } } } }