コード例 #1
0
        public override async Task <RepositoryResponse <ImportViewModel> > SaveModelAsync(bool isSaveSubModels = false, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                var result = await base.SaveModelAsync(isSaveSubModels, context, transaction);

                if (result.IsSucceed && !string.IsNullOrEmpty(ParentId))
                {
                    var getNav = MixDatabaseDataAssociations.UpdateViewModel.Repository.CheckIsExists(
                        m => m.DataId == Id && m.ParentId == ParentId && m.ParentType == ParentType && m.Specificulture == Specificulture
                        , context, transaction);
                    if (!getNav)
                    {
                        var nav = new MixDatabaseDataAssociations.UpdateViewModel()
                        {
                            DataId          = Id,
                            Specificulture  = Specificulture,
                            MixDatabaseId   = MixDatabaseId,
                            MixDatabaseName = MixDatabaseName,
                            ParentType      = ParentType,
                            ParentId        = ParentId,
                            Status          = MixContentStatus.Published
                        };
                        var saveResult = await nav.SaveModelAsync(false, context, transaction);

                        if (!saveResult.IsSucceed)
                        {
                            result.IsSucceed = false;
                            result.Exception = saveResult.Exception;
                            result.Errors    = saveResult.Errors;
                        }
                    }
                }

                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

                if (result.IsSucceed)
                {
                    Obj = Helper.ParseData(Id, Specificulture, context, transaction);
                }
                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <ImportViewModel>(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    transaction.Dispose();
                    context.Dispose();
                }
            }
        }
コード例 #2
0
ファイル: UpdateViewModel.cs プロジェクト: mixcore/mix.core
        public override async Task <RepositoryResponse <UpdateViewModel> > SaveModelAsync(bool isSaveSubModels = false, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                var result = await base.SaveModelAsync(isSaveSubModels, context, transaction);

                // if save current data success and there is related parent data
                if (result.IsSucceed && !string.IsNullOrEmpty(ParentId))
                {
                    MixDatabaseDataAssociations.UpdateViewModel nav = new MixDatabaseDataAssociations.UpdateViewModel()
                    {
                        DataId          = result.Data.Id,
                        Specificulture  = Specificulture,
                        MixDatabaseId   = result.Data.MixDatabaseId,
                        MixDatabaseName = result.Data.MixDatabaseName,
                        ParentId        = ParentId,
                        ParentType      = ParentType,
                        IsClone         = IsClone,
                        Cultures        = Cultures
                    };
                    var saveNav = await nav.SaveModelAsync(true, context, transaction);

                    if (IsClone)
                    {
                    }
                    result.IsSucceed = result.IsSucceed && saveNav.IsSucceed;
                    result.Errors    = saveNav.Errors;
                    result.Exception = saveNav.Exception;
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

                return(result);
            }
            catch (Exception ex)
            {
                return(UnitOfWorkHelper <MixCmsContext> .HandleException <UpdateViewModel>(ex, isRoot, transaction));
            }
            finally
            {
                if (isRoot)
                {
                    UnitOfWorkHelper <MixCmsContext> .CloseDbContext(ref context, ref transaction);
                }
            }
        }