Esempio n. 1
0
        /// <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);
					}
				}
			}
		}