Reputation: 249
If I have:
m => m.OwnedCollection(p => p.Addresses)
and
m => m.OwnedCollection(p => p.Contacts)
I'd like to combine them to be:
m => m.OwnedCollection(p => p.Addresses).OwnedCollection(p => p.Contacts)
Is there a way of doing this?
I'd also like to be able to combine:
m => m.OwnedCollection(p => p.Contacts)
and:
with => with.AssociatedCollection(p => p.AdvertisementOptions)
to be:
m => m.OwnedCollection(p => p.Contacts, with => with.AssociatedCollection(p => p.AdvertisementOptions))
Is there a way of doing this one as well?
I'm hoping that these are fairly simple requirements but I'm finding it difficult to get to grips with the terminology.
Some background:
I'm using https://github.com/refactorthis/GraphDiff to support merging of entities for updates. The problem is that it expects an expression tree describing the relationships of the enitity to be updated eg.
context.UpdateGraph(company, map => map
.OwnedCollection(p => p.Contacts, with => with
.AssociatedCollection(p => p.AdvertisementOptions))
.OwnedCollection(p => p.Addresses)
);
Mine needs to be a generic solution, so I need to examine the various one-to-one, one-to-many and many-to-many relationships of my entities type using reflection and convert these to an expression tree.
Any help on my specific questions or general help would be appreciated.
Upvotes: 1
Views: 144
Reputation: 6269
The develop
branch of GraphDiff provides support for attribute based mapping. Instead of providing an expression tree mapping your graph, you add custom attributes (Owned
or Associated
) to the navigation properties in your model classes and GraphDiff creates the mapping for you. Have a look at GraphDiffs test models for some examples of this.
Upvotes: 2