理由:
HQL 和 NH 标准是 NHibernate 特定的构造,因此它们是服务器端 DAL 实现细节。我不希望它们“泄漏”到客户端。因此,我们的客户端提供LINQ表达式供服务器处理。
对我来说似乎合理,但是有些人不这么认为,所以我想知道为什么。
Thanks.
反对接受来自(或暴露)的表达的论点IQueryable<>
与)客户端相比,它允许非客户端逻辑(例如过滤和加入)发生在“错误”的地方。如果客户端暴露了错误的数据,您现在有两个地方需要检查:客户端逻辑和 DAL 背后的逻辑。从本质上讲,它很容易让你无法区分你的担忧。
也就是说,有时故意和仔细地使用这些技术确实可以改进您的应用程序。例如,使用IQueryable<>
是支持客户端排序和分区(跳过/获取)的好方法,这些排序和分区由服务器而不是在结果集上高效执行。反驳的观点是,您应该只在 DAL 中提供排序和分区参数。
最终使用对您的应用程序有意义的东西。如果你给自己太多的束缚而发现自己悬而未决,你随时可以在以后进行重构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)