Esempio n. 1
0
        private static async Task <CodeEntity> GetOrAddEntity(IDataContract contract, Guid moduleId, CodeEntity en)
        {
            CodeEntity entity = contract.CodeEntities.FirstOrDefault(m => m.ModuleId == moduleId && m.Name == en.Name && m.Display == en.Display);

            if (entity != null)
            {
                return(entity);
            }

            CodeEntityInputDto dto = new CodeEntityInputDto()
            {
                Name    = en.Name,
                Display = en.Display,
                PrimaryKeyTypeFullName = en.PrimaryKeyTypeFullName,
                Icon               = en.Icon,
                Listable           = en.Listable,
                Addable            = en.Addable,
                Updatable          = en.Updatable,
                Deletable          = en.Deletable,
                IsDataAuth         = en.IsDataAuth,
                HasCreatedTime     = en.HasCreatedTime,
                HasLocked          = en.HasLocked,
                HasSoftDeleted     = en.HasSoftDeleted,
                HasCreationAudited = en.HasCreationAudited,
                HasUpdateAudited   = en.HasUpdateAudited,
                IsLocked           = en.IsLocked,
                ModuleId           = moduleId
            };
            await contract.UpdateCodeEntities(dto);

            entity = contract.CodeEntities.First(m => m.ModuleId == moduleId && m.Name == en.Name && m.Display == en.Display);

            return(entity);
        }
        public async void Save()
        {
            if (!CanSave)
            {
                Helper.Notify("实体信息验证失败", NotificationType.Warning);
                return;
            }

            for (int i = 0; i < Entities.Count; i++)
            {
                Entities[i].Order = i + 1;
            }

            CodeEntityInputDto[] dtos   = Entities.Select(m => m.MapTo <CodeEntityInputDto>()).ToArray();
            OperationResult      result = null;
            await _provider.ExecuteScopedWorkAsync(async provider =>
            {
                IDataContract contract = provider.GetRequiredService <IDataContract>();
                result = await contract.UpdateCodeEntities(dtos);
            });

            Helper.Notify(result);
            if (!result.Succeeded)
            {
                return;
            }
            Init();
        }