/// <summary> /// Create current application's extension type metadata. /// </summary> /// <param name="name">The name.</param> /// <param name="category">The category.</param> /// <param name="description">The description.</param> /// <param name="objectMetadataType">Type of the object metadata.</param> /// <param name="isGlobal">if set to <c>true</c> [is global].</param> /// <param name="parentObjectMetadataId">The parent object metadata id.</param> /// <param name="version">The version.</param> /// <returns></returns> public Guid AddType(string name, string category, string description, ObjectMetadataTypes objectMetadataType, bool isGlobal, Guid? parentObjectMetadataId, int version) { Kit.NotNull(name, "name"); lock (syncObject) { using (ExtensionModelDataContext ctx = DataContextFactory.Create<ExtensionModelDataContext>()) { Guid applicationId = isGlobal ? Guid.Empty : this.applicationContext.ApplicationId; bool existedTypeName = ctx.ObjectMetadatas.Where(meta => meta.ApplicationId == applicationId && meta.Name == name).Count() > 0; if (existedTypeName) throw new ValidationException(string.Format(Resources.ExtensionTypeExist, name)); if (parentObjectMetadataId.HasValue) { bool validParentObjectMetadataId = ctx.ObjectMetadatas.Where(meta => new[] { applicationId, Guid.Empty }.Contains(meta.ApplicationId) && meta.ObjectMetadataId == parentObjectMetadataId).Count() > 0; if (!validParentObjectMetadataId) throw new ValidationException(string.Format(Resources.IDofSpecifiedParentExtensionTypeIsInvalid, parentObjectMetadataId)); } ObjectMetadata metadata = new ObjectMetadata { ApplicationId = applicationId, Name = name, Category = category, Description = description, ParentObjectMetadataId = parentObjectMetadataId, LastUpdatedOn = DateTime.UtcNow }; ctx.ObjectMetadatas.InsertOnSubmit(metadata); ctx.SubmitChanges(); this.ClearAllObjectMetadataFromCache(); return metadata.ObjectMetadataId; } } }
/// <summary> /// Create current application's extension type metadata. /// </summary> /// <param name="name"></param> /// <param name="category"></param> /// <param name="description"></param> /// <param name="objectMetadataType"></param> /// <param name="isGlobal"></param> /// <param name="parentObjectMetadataId"></param> /// <returns>created extension type id</returns> public Guid AddType(string name, string category, string description, ObjectMetadataTypes objectMetadataType, bool isGlobal, Guid? parentObjectMetadataId) { return AddType(name, category, description, objectMetadataType, isGlobal, parentObjectMetadataId, 1); }