Пример #1
0
        /// <summary>
        /// Adds the data object for exposing with its whole hierarchy.
        /// </summary>
        /// <param name="meta">The metadata object.</param>
        /// <param name="dataObjectType">The type of the data object.</param>
        private void AddDataObjectWithHierarchy(DataObjectEdmMetadata meta, Type dataObjectType)
        {
            // Some base class can be already added.
            if (meta.Contains(dataObjectType))
            {
                return;
            }

            if (dataObjectType == typeof(DataObject))
            {
                var dataObjectTypeSettings = meta[dataObjectType] = new DataObjectEdmTypeSettings()
                {
                    KeyType = typeof(Guid), EnableCollection = true, CollectionName = EntitySetNameBuilder(dataObjectType)
                };                                                                                                                                                                                              // TODO
                AddProperty(dataObjectTypeSettings, typeof(DataObject).GetProperty(_keyProperty.Name));
                return;
            }

            Type baseType = dataObjectType.BaseType;

            Contract.Assume(baseType != null);

            AddDataObjectWithHierarchy(meta, baseType);

            var typeSettings = meta[dataObjectType] = new DataObjectEdmTypeSettings
            {
                EnableCollection = true,
                CollectionName   = EntitySetNameBuilder(dataObjectType),
                DefaultView      = DynamicView.Create(dataObjectType, null).View
            };

            AddProperties(dataObjectType, typeSettings);
            if (typeSettings.KeyType != null)
            {
                meta[baseType].KeyType = null;
            }
        }
        public bool IsDataObjectRegistered(Type dataObjectType)
        {
            Contract.Requires <ArgumentNullException>(dataObjectType != null);

            return(_metadata.Contains(dataObjectType));
        }