C# 检索子实体时实体框架性能问题
我有一个包含数百万子实体的实体,结构如下:C# 检索子实体时实体框架性能问题,c#,sql-server,performance,entity-framework,sql-server-2008,C#,Sql Server,Performance,Entity Framework,Sql Server 2008,我有一个包含数百万子实体的实体,结构如下: public class Sample { public long ID { get; set; } public string SampleNo { get; set; } public virtual IList<SampleCustomFieldValue> CustomFieldValues { get; set; } } public class SampleCustomFieldValue {
public class Sample
{
public long ID { get; set; }
public string SampleNo { get; set; }
public virtual IList<SampleCustomFieldValue> CustomFieldValues { get; set; }
}
public class SampleCustomFieldValue
{
public long ID { get; set; }
//some attributes...
public virtual Sample ParentSample
{
get;
set;
}
}
SELECT
[Extent1].[ID] AS [ID],
[Extent1].[ParentSample_ID] AS [ParentSample_ID]
FROM [dbo].[SampleCustomFieldValues] AS [Extent1]
WHERE ([Extent1].[ParentSample_ID] IS NOT NULL) AND ([Extent1].[ParentSample_ID] = @EntityKeyValue1)
在SQLServerManagementStudio中,只需执行1或2秒即可获取所有数据
您能告诉我这里发生了什么吗?您是将数据显示在Datagridview还是其他什么东西中?您能显示您的EF查询吗?当许多对象必须具体化时,一个很短的查询可能需要很长时间。SSMS不必构建CLR对象,它会立即显示第一个结果,而在后台它可能会将记录流式传输到输出窗口。无论如何,您必须将从数据库中获取的记录数量减少到可管理的数量。