public async Task <bool> AddCultureAsync(string culture, string description) { string providerConnectionString = ""; List <ResourceString> resourceStrings = null; using (var ctx = GetContext()) { // Get all original resources for all branches (no tracking, we make no changes) resourceStrings = await ctx.ResourceStrings.AsNoTracking() .ToListAsync() .ConfigureAwait(false); // And get the connection string providerConnectionString = ctx.GetProviderConnectionString(); } DateTime updateTime = DateTime.UtcNow; const string updatedBy = "system/add language"; var translationProjection = resourceStrings.Select(s => new Translation() { FK_BranchId = s.FK_BranchId, FK_ResourceFileId = s.FK_ResourceFileId, ResourceIdentifier = s.ResourceIdentifier, Culture = culture, TranslatedValue = null, OriginalResxValueChangedSinceTranslation = true, OriginalResxValueAtTranslation = s.ResxValue, LastUpdated = updateTime, LastUpdatedBy = updatedBy }); using (var conn = new SqlConnection(providerConnectionString)) { await conn.OpenAsync(); using (var sqlTxn = conn.BeginTransaction()) { var cmd = new SqlCommand("INSERT INTO Languages(Culture,Description) VALUES(@param1,@param2)", conn, sqlTxn); cmd.Parameters.Add(new SqlParameter("@param1", culture)); cmd.Parameters.Add(new SqlParameter("@param2", description)); try { await cmd.ExecuteNonQueryAsync(); var bcp = new Overby.Data.BulkInserter <Translation>(conn, "Translations", 5000, SqlBulkCopyOptions.Default, sqlTxn); bcp.Insert(translationProjection); sqlTxn.Commit(); return(true); } catch (Exception ex) { Trace.TraceError(ex.ToString()); sqlTxn.Rollback(); } finally { conn.Close(); } } } return(false); }
public async Task<bool> AddCultureAsync(string culture, string description) { string providerConnectionString = ""; List<ResourceString> resourceStrings = null; using (var ctx = GetContext()) { // Get all original resources for all branches (no tracking, we make no changes) resourceStrings = await ctx.ResourceStrings.AsNoTracking() .ToListAsync() .ConfigureAwait(false); // And get the connection string providerConnectionString = ctx.GetProviderConnectionString(); } DateTime updateTime = DateTime.UtcNow; const string updatedBy = "system/add language"; var translationProjection = resourceStrings.Select(s => new Translation() { FK_BranchId = s.FK_BranchId, FK_ResourceFileId = s.FK_ResourceFileId, ResourceIdentifier = s.ResourceIdentifier, Culture = culture, TranslatedValue = null, OriginalResxValueChangedSinceTranslation = true, OriginalResxValueAtTranslation = s.ResxValue, LastUpdated = updateTime, LastUpdatedBy = updatedBy }); using (var conn = new SqlConnection(providerConnectionString)) { await conn.OpenAsync(); using (var sqlTxn = conn.BeginTransaction()) { var cmd = new SqlCommand("INSERT INTO Languages(Culture,Description) VALUES(@param1,@param2)", conn, sqlTxn); cmd.Parameters.Add(new SqlParameter("@param1", culture)); cmd.Parameters.Add(new SqlParameter("@param2", description)); try { await cmd.ExecuteNonQueryAsync(); var bcp = new Overby.Data.BulkInserter<Translation>(conn, "Translations", 5000, SqlBulkCopyOptions.Default, sqlTxn); bcp.Insert(translationProjection); sqlTxn.Commit(); return true; } catch (Exception ex) { Trace.TraceError(ex.ToString()); sqlTxn.Rollback(); } finally { conn.Close(); } } } return false; }