/// <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; } }
/// <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))) { }
/// <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)); }
/// <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))) { }