【发布时间】:2019-12-27 07:32:43
【问题描述】:
我正在处理一个包含超过 15 个数据库的项目,我总是需要连接来自不同实体的表,所以我最终使用 .ToList。
朋友建议我做一个数据库链接服务器,然后在同一个数据库中为所有引用表创建视图。
但我对他们俩都不满意。
除了.ToList 和数据库视图之外还有其他解决方案吗?在这种情况下,最佳做法是什么?
【问题讨论】:
-
您是否需要完全在内存中的查询结果?比 ToList 是正确的事情,这没有什么不好。您可以使用 Foreach 作为替代项逐项迭代 - 如果您不需要同时进行所有操作。 “不开心”并不能真正解释您的偏好。
-
ToList 将获取我不想要的整个查询。例如,如果你想连接两个表并给其中一个 .tolist 它获取所有记录然后它使用连接过滤这是不正确的,这就是我问的原因
-
如果您不想获取它们,请不要使用 ToList !这是您在查询中做的最后一件事。您必须要获取某些内容,否则您将不需要查询!如果你获取太多,你附加 where-conditions 并说出你想要哪个......如果你查询你不想查询的东西,你的查询是错误的,这与 ToList() 无关。 ToList 的意思类似于“立即执行查询”。
-
好的!你读过我的问题吗?当我有两个不同的实体时,我正在寻求解决方案
-
是的,但是您的问题中没有代码,并且“拥有实体”和获取是一回事。内存中的实体是在获取时建立的。您应该让 SQL 服务器执行跨数据库连接。您是否在不同的 DbContext 上运行不同的查询并尝试将它们加入内存?你不需要 ToList (只是省略它),但它会从两个服务器加载两个表。你怎么能在不加载两个源表的情况下进行连接?根据定义,这是不可能的。您可以使用 ToDictionary 加速它,或者使用分组查询查询一个表。
标签: c# database vb.net entity-framework