Example #1
0
        /// <summary>
        /// Saves.
        /// </summary>
        /// <param name="value">The entity to add or update.</param>
        /// <param name="cancellationToken">The optional token to monitor for cancellation requests.</param>
        /// <returns>The change method.</returns>
        public virtual async Task <ChangingResultInfo> SaveAsync(T value, CancellationToken cancellationToken = default)
        {
            if (value == null)
            {
                return(new ChangingResultInfo(ChangeMethods.Unchanged));
            }
            var isNew = value.IsNew;

            if (isNew)
            {
                OnAdd(value);
            }
            else
            {
                OnUpdate(value);
            }
            try
            {
                var result = await DbResourceEntityExtensions.SaveAsync(Set, SaveChangesAsync, value, cancellationToken);

                Saved?.Invoke(this, new ChangeEventArgs <T>(isNew ? null : value, value, result));
                if (ResourceEntityExtensions.IsSuccessful(result))
                {
                    return(new ChangingResultInfo <T>(result, value, $"{result} {typeof(T).Name} entity."));
                }
                return(result);
            }
            catch (Exception ex)
            {
                var err = DbResourceEntityExtensions.TryCatch(ex);
                if (err != null)
                {
                    return(err);
                }
                throw;
            }
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the OnPremisesResourceAccessContext class.
 /// </summary>
 /// <param name="client">The resource access client.</param>
 /// <param name="configureConnection">The method to configure context options with connection string.</param>
 /// <param name="connection">The connection string.</param>
 /// <param name="optionsAction">The additional options action.</param>
 public OnPremisesResourceAccessContext(OnPremisesResourceAccessClient client, Func <DbContextOptionsBuilder <DbContext>, string, Action <DbContextOptionsBuilder <DbContext> >, DbContextOptionsBuilder <DbContext> > configureConnection, string connection, Action <DbContextOptionsBuilder <DbContext> > optionsAction)
     : this(client, new InternalDbContext(DbResourceEntityExtensions.CreateDbContextOptions(configureConnection, connection, optionsAction)))
 {
 }
Example #3
0
 /// <summary>
 /// Searches.
 /// </summary>
 /// <param name="q">The query arguments.</param>
 /// <param name="cancellationToken">The optional token to monitor for cancellation requests.</param>
 /// <returns>A collection of entity.</returns>
 public virtual Task <CollectionResult <T> > SearchAsync(QueryData q, CancellationToken cancellationToken = default)
 {
     return(DbResourceEntityExtensions.SearchAsync(Set, q, MapQuery, cancellationToken));
 }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the OnPremisesResourceAccessContext class.
 /// </summary>
 /// <param name="client">The resource access client.</param>
 /// <param name="configureConnection">The method to configure context options with connection string.</param>
 /// <param name="connection">The database connection.</param>
 public OnPremisesResourceAccessContext(OnPremisesResourceAccessClient client, Func <DbContextOptionsBuilder, DbConnection, DbContextOptionsBuilder> configureConnection, DbConnection connection)
     : this(client, new InternalDbContext(DbResourceEntityExtensions.CreateDbContextOptions <DbContext>(configureConnection, connection)))
 {
 }