|
|
|
|
@ -126,6 +126,7 @@ public class GenericController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static async Task<int> InsertAsync<T>(T entity) where T : class, IMetadata {
|
|
|
|
|
await gremlinDb.Set<T>().ToListAsync(); //Get newest versions fresh from db
|
|
|
|
|
try {
|
|
|
|
|
gremlinDb.Set<T>().Add(entity);
|
|
|
|
|
return await gremlinDb.SaveChangesAsync();
|
|
|
|
|
@ -142,6 +143,7 @@ public class GenericController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static async Task<int> InsertAsync<T>(IEnumerable<T> entities) where T : class, IMetadata {
|
|
|
|
|
await gremlinDb.Set<T>().ToListAsync(); //Get newest versions fresh from db
|
|
|
|
|
try {
|
|
|
|
|
gremlinDb.Set<T>().AddRange(entities);
|
|
|
|
|
return await gremlinDb.SaveChangesAsync();
|
|
|
|
|
@ -167,6 +169,7 @@ public class GenericController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static async Task<int> UpdateAsync<T>(T entity) where T : class, IMetadata {
|
|
|
|
|
await gremlinDb.Set<T>().FirstOrDefaultAsync(t => t.Equals(entity)); //Get newest version fresh from db
|
|
|
|
|
try {
|
|
|
|
|
gremlinDb.Set<T>().Update(entity);
|
|
|
|
|
return await gremlinDb.SaveChangesAsync(false);
|
|
|
|
|
@ -182,6 +185,8 @@ public class GenericController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static async Task<int> UpdateAsync<T>(IEnumerable<T> entities) where T : class, IMetadata {
|
|
|
|
|
await gremlinDb.Set<T>().Where(t => t.Equals(entities)).ToListAsync(); //Get newest version fresh from db
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
await Task.Run(() => gremlinDb.Set<T>().UpdateRange(entities));
|
|
|
|
|
return await gremlinDb.SaveChangesAsync();
|
|
|
|
|
@ -208,7 +213,8 @@ public class GenericController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void HandleConcurrencyExceptions(DbUpdateException ex) {
|
|
|
|
|
foreach (EntityEntry entry in ex.Entries)
|
|
|
|
|
Console.WriteLine($"!!! HandleConcurrencyException: {ex.Message}");
|
|
|
|
|
foreach (EntityEntry entry in ex.Entries) {
|
|
|
|
|
switch (entry.Entity) {
|
|
|
|
|
case Quote or CustomDescription or Account or Contact: {
|
|
|
|
|
PropertyValues proposedValues = entry.CurrentValues;
|
|
|
|
|
@ -228,5 +234,6 @@ public class GenericController {
|
|
|
|
|
default:
|
|
|
|
|
throw new NotSupportedException("Don't know how to handle concurrency conflicts for " + entry.Metadata.Name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|