如何组合两个表达式树体
本文关键字:两个 表达式 组合 何组合 | 更新日期: 2023-09-27 18:25:18
如果我有:
m => m.OwnedCollection(p => p.Addresses)
和
m => m.OwnedCollection(p => p.Contacts)
我想把它们组合成:
m => m.OwnedCollection(p => p.Addresses).OwnedCollection(p => p.Contacts)
有办法做到这一点吗?
我也希望能够结合:
m => m.OwnedCollection(p => p.Contacts)
和:
with => with.AssociatedCollection(p => p.AdvertisementOptions)
将:
m => m.OwnedCollection(p => p.Contacts, with => with.AssociatedCollection(p => p.AdvertisementOptions))
有没有办法也这样做?
我希望这些都是相当简单的要求,但我发现很难掌握术语。
一些背景:
我正在使用https://github.com/refactorthis/GraphDiff以支持合并实体进行更新。问题是它期望一个描述祖先关系的表达式树被更新,例如
context.UpdateGraph(company, map => map
.OwnedCollection(p => p.Contacts, with => with
.AssociatedCollection(p => p.AdvertisementOptions))
.OwnedCollection(p => p.Addresses)
);
我的需要是一个通用的解决方案,所以我需要使用反射来检查实体类型的各种一对一、一对多和多对多关系,并将它们转换为表达式树。
如对我的具体问题有任何帮助或一般帮助,我们将不胜感激。
GraphDiff的develop
分支提供了对基于属性的映射的支持。不提供映射图形的表达式树,而是将自定义属性(Owned
或Associated
)添加到模型类中的导航属性,GraphDiff将为您创建映射。看看GraphDiffs测试模型中的一些例子。