/// <summary> /// For each entityset defined in the datamodel, adds a standard controller if a custom controller is not already defined. /// </summary> /// <param name="controllerTypeSelector"></param> public void AddStandardEntitySetControllers(ControllerTypeSelector controllerTypeSelector) { Contract.Requires <ArgumentNullException>(controllerTypeSelector != null); foreach (IEntitySetMetadata entitySetMetadata in _containerMetadata.EntitySets) { // Only add the standard controller if there's not already a controller with the same name defined string entitySetName = entitySetMetadata.Name; HttpControllerDescriptor controllerDescriptor; if (!_controllerSelector.TryGetController(entitySetName, out controllerDescriptor)) { var entityTypeMetadata = entitySetMetadata.ElementTypeMetadata; // Determine the controller type Type[] keyTypes = entityTypeMetadata.ClrKeyProperties.Select(prop => prop.PropertyType).ToArray(); Type controllerType = controllerTypeSelector(entityTypeMetadata.ClrType, keyTypes, entitySetMetadata.ContextType); if (controllerType != null) { AddEntitySetController(entitySetName, entityTypeMetadata.ClrType, controllerType); } } } }
/// <summary> /// For each entityset defined in the datamodel, adds a standard controller if a custom controller is not already defined. /// </summary> /// <param name="controllerTypeSelector"></param> public void AddStandardEntitySetControllers(ControllerTypeSelector controllerTypeSelector) { Contract.Requires<ArgumentNullException>(controllerTypeSelector != null); foreach (IEntitySetMetadata entitySetMetadata in _containerMetadata.EntitySets) { // Only add the standard controller if there's not already a controller with the same name defined string entitySetName = entitySetMetadata.Name; HttpControllerDescriptor controllerDescriptor; if (! _controllerSelector.TryGetController(entitySetName, out controllerDescriptor)) { var entityTypeMetadata = entitySetMetadata.ElementTypeMetadata; // Determine the controller type Type[] keyTypes = entityTypeMetadata.ClrKeyProperties.Select(prop => prop.PropertyType).ToArray(); Type controllerType = controllerTypeSelector(entityTypeMetadata.ClrType, keyTypes, entitySetMetadata.ContextType); if (controllerType != null) { AddEntitySetController(entitySetName, entityTypeMetadata.ClrType, controllerType); } } } }