C# 使用Linq的外键约束非常慢
我有一个SQL Server数据库,我正试图为它构建一个RESTful API。 我使用ADO.Net和Linq从如下表中检索一行:C# 使用Linq的外键约束非常慢,c#,linq,ado.net,foreign-keys,C#,Linq,Ado.net,Foreign Keys,我有一个SQL Server数据库,我正试图为它构建一个RESTful API。 我使用ADO.Net和Linq从如下表中检索一行: [HttpGet] public tTrip getTripById(Guid id) { var _trip = (from trips in db.tTrip where trips.ID == id select trips).FirstOrDefault(); return
[HttpGet]
public tTrip getTripById(Guid id)
{
var _trip = (from trips in db.tTrip
where trips.ID == id
select trips).FirstOrDefault();
return _trip;
}
调试代码时,将检索正确的对象。但是,如果我继续运行,将不会有响应。我猜这是因为对于返回行中的每一个外键,ADO都会通过其他映射表进行另一次查找,这会大大降低速度
如果我只选择一个不包含任何FKCs的列,一切正常
知道如何关闭该获取对象的FKC查找吗
谢谢大家! 我发现了问题-在ObjectContext类中(“db”变量来自btw),我将ContextOptions.LazyLoadingEnabled变量设置为true
将其设置为false,应用程序只返回每个条目的Guid,而不是从数据库加载条目详细信息。是LINQ到SQL还是实体框架与SQL Server的连接通过ADO.Net工作,但在代码中我使用LINQ。我认为Linq部分很好(因为可以很快找到正确的对象),但是外键查找给我带来了麻烦?两者都有“Linq您可以使用”。“db”变量来自哪里?你能展示一下完整的控制器吗?或者至少是相关的位?我发现了问题-在ObjectContext类中(db变量来自btw),我将ContextOptions.LazyLoadingEnabled变量设置为true。将其设置为false,应用程序将仅返回每个条目的Guid,而不是从数据库加载条目详细信息。