This commit is contained in:
@@ -60,36 +60,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
static void Main(string[] args)
|
||||
{
|
||||
using (var dbContext = new DbParentChild())
|
||||
{
|
||||
var parent = new Parent
|
||||
{
|
||||
FirstName = "Joe",
|
||||
LastName = "Smith"
|
||||
};
|
||||
|
||||
parent.Children.Add(
|
||||
new Child
|
||||
{
|
||||
FirstName = "LittleJoe",
|
||||
LastName = "Smith"
|
||||
});
|
||||
parent.Children.Add(
|
||||
new Child
|
||||
{
|
||||
FirstName = "Anne",
|
||||
LastName = "Smith"
|
||||
});
|
||||
|
||||
dbContext.Add(parent);
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//DUPLICATE
|
||||
//
|
||||
@@ -135,9 +106,10 @@ namespace AyaNova.Biz
|
||||
return ret;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//UPDATE
|
||||
//
|
||||
//this is how it was roughly
|
||||
internal async Task<PartAssembly> PutAsync(PartAssembly putObject)
|
||||
{
|
||||
// PartAssembly dbObject = await ct.PartAssembly.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
@@ -147,9 +119,9 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
return null;
|
||||
}
|
||||
// PartAssembly SnapshotOfOriginalDBObj = new PartAssembly();
|
||||
//CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
||||
//CopyObject.Copy(putObject, dbObject, "Id");
|
||||
PartAssembly SnapshotOfOriginalDBObj = new PartAssembly();
|
||||
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
||||
CopyObject.Copy(putObject, dbObject, "Id");
|
||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
||||
@@ -173,6 +145,44 @@ namespace AyaNova.Biz
|
||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
||||
return dbObject;
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//UPDATE
|
||||
//
|
||||
internal async Task<PartAssembly> PutAsync(PartAssembly putObject)
|
||||
{
|
||||
//Get the db object with no tracking as about to be replaced not updated
|
||||
PartAssembly dbObject = await GetAsync(putObject.Id, false);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
return null;
|
||||
}
|
||||
|
||||
putObject.Tags = TagBiz.NormalizeTags(putObject.Tags);
|
||||
putObject.CustomFields = JsonUtil.CompactJson(putObject.CustomFields);
|
||||
await ValidateAsync(putObject, dbObject);
|
||||
ct.Replace(dbObject,putObject);
|
||||
if (HasErrors) return null;
|
||||
try
|
||||
{
|
||||
await ct.SaveChangesAsync();
|
||||
}
|
||||
catch (DbUpdateConcurrencyException)
|
||||
{
|
||||
if (!await ExistsAsync(putObject.Id))
|
||||
AddError(ApiErrorCode.NOT_FOUND);
|
||||
else
|
||||
AddError(ApiErrorCode.CONCURRENCY_CONFLICT);
|
||||
return null;
|
||||
}
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, BizType, AyaEvent.Modified), ct);
|
||||
await SearchIndexAsync(dbObject, false);
|
||||
await TagBiz.ProcessUpdateTagsInRepositoryAsync(ct, putObject.Tags,dbObject.Tags);
|
||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, putObject, dbObject);
|
||||
return putObject;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//DELETE
|
||||
|
||||
@@ -90,7 +90,12 @@ namespace AyaNova.Models
|
||||
public AyContext(DbContextOptions<AyContext> options) : base(options)
|
||||
{ }
|
||||
|
||||
|
||||
//https://stackoverflow.com/a/64053832/8939
|
||||
public void Replace<TEntity>(TEntity oldEntity, TEntity newEntity) where TEntity : class
|
||||
{
|
||||
ChangeTracker.TrackGraph(oldEntity, e => e.Entry.State = EntityState.Deleted);
|
||||
ChangeTracker.TrackGraph(newEntity, e => e.Entry.State = e.Entry.IsKeySet ? EntityState.Modified : EntityState.Added);
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user