我有一个带有几个Web控制器的应用程序,现在我有了一个需求,即能够通过对象属性过滤结果。我一直在考虑使用OData,但我不确定这是否合适,原因有几点:
DataContext
,而是通过我们的“域”层从我们的数据库中获取数据,因此它对实体框架模型没有可见性。我是不是走错了第三条路?如果没有,我们是否能够使用这个OData库而不对Web和EF的交互方式进行重要的重构?
发布于 2019-03-13 22:18:25
我还没有使用OData的经验,但据我所见,它的设计目的是提供一个上下文,并管理这些模型的交互和返回。我绝对不喜欢以任何形式将实体返回给客户。
这是一个丑陋的处境,但当我面对这种情况时,我的第一个行动方针是向客户施压,以证明他们的搜索需求是合理的。默认的请求几乎总是“好的,它会很好地能够搜索所有东西。”我对此的回答是,我不想知道你想要什么,我想知道你需要什么,因为我不想给你一把上膛的枪,让你把自己的脚踢掉,然后让你责怪我,因为系统停止运转。搜索是一个巨大的性能杀手,如果它太开放的话。这是很难测试的准确性/相关性,并有效索引100%的可能的搜索案例,当用户只需要25%的这些场景。如果客户端无法告诉您他们将需要什么搜索,并且只想要所有东西,因为他们可能需要它,那么他们还不需要它。
就我个人而言,我坚持特定的搜索DTO并将它们翻译成linq表达式。
如果我遇到这样的困难,我会:
1号是可选的,一个很好的条件,只要他们能够忍受搜索,直到复制才能“看到”更新的标准。(也就是说,根据复制策略/大小,只需几秒钟到几分钟)这些搜索通常用于报告类型的查询,因此我会将它们与用户使用的日常常规搜索选项保持分离。(即高级搜索选项等)
https://stackoverflow.com/questions/55150841
复制相似问题