diff --git a/Models/CommonDbContext.cs b/Models/CommonDbContext.cs index 10dd323..12a1e16 100644 --- a/Models/CommonDbContext.cs +++ b/Models/CommonDbContext.cs @@ -197,7 +197,10 @@ public abstract class CommonDbContext : DbContext var nav = candidates?.FindNavigation(navigationName); var entityT = nav?.TargetEntityType; - if (entityT == null || entityT.IsOwned()) + if (entityT == null) + return new T(); + + if (entityT.IsOwned()) { /* var source = this.GetService(); @@ -222,30 +225,24 @@ public abstract class CommonDbContext : DbContext if (!nav.IsCollection) { - var refVal = Entry(parentI).Reference(navigationName); + var parEnt = Entry(parentI); + var refVal = parEnt.Reference(navigationName); refVal.CurrentValue = val; if (refVal.TargetEntry == null) throw new Exception(); - - refVal.TargetEntry.State = EntityState.Added; + } + else + { + var refVal = Entry(parentI).Collection(navigationName); + if (refVal.CurrentValue is ICollection coll) + { + coll.Add(val); + } } - //this.ChangeTracker.DetectChanges(); - - /* - var refVal = this.Set() - .Entry(parentI) - .Reference(navigationName); - - refVal.CurrentValue = val; - - Attach(val); - - if (refVal.TargetEntry == null) - throw new Exception("test"); - */ - config?.Invoke(val); + this.ChangeTracker.DetectChanges(); + return val; }