I have following entities in my DbContext
:
public class A { public A() { Bs = new List<B>(); } public ICollection<B> Bs { set; get; } }
Sometimes I Want to update a
graph:
var a = dbContext.As .AsNoTracking() .Include(x=>x.Bs) .firstOrDefault(); var c = new C(); a.Bs.Add(c); var d = new D(); var e1 = new E(); var e2 = new E(); d.Es.Add(e1); //<-- added new E d.Es.Add(e2); //<-- added new E a.Bs.Add(d);
I want to update a
with its Bs
(update C
,D
,E
too) using graphdiff
:
dbContext.UpdateGraph(a,map=>map.OwnedCollection(x=>x.Bs));
This updates A
, B
s, C
s, D
s, but not E
s.
So I think, I need to define a conditional mapping for graphdiff
, to update E
s too, somethings like:
dbContext.UpdateGraph(a,map=>map.OwnedCollection(x=>x.Bs.OfType<D>(), with =>with.OwnedCollection(t=>t.Es)) .OwnedCollection(x=>x.Bs.OfType<C>()));
Is there any way to do this job?
You can use this with graphdiff:
dbContext.UpdateGraph(a, map => map .OwnedCollection(b => p.Bs, with => with .AssociatedCollection(p => p.Es)));
see this link: GraphDiff Explanation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With