gpt4 book ai didi

c# - 使用 Linq2Nibernate 和 IQueryable 进行界面设计

转载 作者:行者123 更新时间:2023-11-30 21:25:28 26 4
gpt4 key购买 nike

当使用 Linq2Nibernate 时更好地让您的 Repository 返回一个 IQueryable?

我的理解是,如果您使用 Linq 来 Nibernate,查询将不会“触发”,直到您调用 .First() 或 Single() 等。那么最好从所有接口(interface)返回 IQueryable 以便您可以在表达式树触发之前构建\操作表达式树吗?

My Repositories 由服务调用并继承自 IServicie。

编辑:

首先,我非常感谢所有的回答。但我想补充一点问题。我是为了这个设计。我不完全理解围绕测试的保留意见。只要在每个点(即每个过滤点)都测试该过程,那么我真的看不出有什么不同。

补充:

如果您的存储库不返回 IQuerrable,使用 Linq2Nibernate 有什么意义吗?

最佳答案

我个人认为不是。从存储库公开可组合查询的问题在于,您无法再对它们进行完全单元测试——它们的行为(和成功)现在取决于调用者。例如,他们可能会做 .Where(x=>SomeUnmappedMethod(x)) (没有翻译)。我在这 here 上添加了更多内容.

如果您有返回(例如)IList<T> 的固定方法或 T[] ,那么您可以确定,如果它在单元测试中有效,它应该真正有效(除非有任何配置错误)。这也意味着您可以单独分析 DAL 并对将要执行的 SQL(等)有合理的信心。您无法分析/优化根据调用者而变化的 DAL。

(基于我的 LINQ-to-SQL 用法;不是特别针对 LINQ-to-NHibernate)

关于c# - 使用 Linq2Nibernate 和 IQueryable 进行界面设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com