This commit is contained in:
@@ -60,35 +60,6 @@ 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
|
//DUPLICATE
|
||||||
@@ -135,9 +106,10 @@ namespace AyaNova.Biz
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
/*
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//UPDATE
|
//UPDATE
|
||||||
//
|
//this is how it was roughly
|
||||||
internal async Task<PartAssembly> PutAsync(PartAssembly putObject)
|
internal async Task<PartAssembly> PutAsync(PartAssembly putObject)
|
||||||
{
|
{
|
||||||
// PartAssembly dbObject = await ct.PartAssembly.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
// PartAssembly dbObject = await ct.PartAssembly.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||||
@@ -147,9 +119,9 @@ namespace AyaNova.Biz
|
|||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// PartAssembly SnapshotOfOriginalDBObj = new PartAssembly();
|
PartAssembly SnapshotOfOriginalDBObj = new PartAssembly();
|
||||||
//CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
CopyObject.Copy(dbObject, SnapshotOfOriginalDBObj);
|
||||||
//CopyObject.Copy(putObject, dbObject, "Id");
|
CopyObject.Copy(putObject, dbObject, "Id");
|
||||||
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
dbObject.Tags = TagBiz.NormalizeTags(dbObject.Tags);
|
||||||
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
dbObject.CustomFields = JsonUtil.CompactJson(dbObject.CustomFields);
|
||||||
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
ct.Entry(dbObject).OriginalValues["Concurrency"] = putObject.Concurrency;
|
||||||
@@ -173,6 +145,44 @@ namespace AyaNova.Biz
|
|||||||
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, SnapshotOfOriginalDBObj);
|
||||||
return dbObject;
|
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
|
//DELETE
|
||||||
|
|||||||
@@ -90,7 +90,12 @@ namespace AyaNova.Models
|
|||||||
public AyContext(DbContextOptions<AyContext> options) : base(options)
|
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)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user