我在.NET 4.0应用程序中有一个EF4模型,我升级到.NET 4.5和EF5(引用新的EntityFramework 5程序集),我将"代码生成策略"更改为"无"并添加了代码生成项(EF 5) .x DbContext Generator)到模型.几乎在任何情况下都能正常工作.但是,当我访问引用大量记录(> 100.000条记录)的导航属性时,现在遇到了大问题.该数据库是MSSQL 2005 Server.
我的场景看起来像这样:
我的数据库中的每个客户都有一个唯一的ID(它是数据库中的主键),此外每个客户记录都包含一个父客户ID(在这种特殊情况下,几乎每个客户都引用相同的父ID(150.000中约145.000条记录)记录)id为1)的记录.
我的模型包含DbSet<CustomerBase> CustomerBase表示包含所有客户及其数据的表的表.此外,还有一些名为的导航属性ICollection<CustomerBase> CustomerBaseChildren,ICollection<CustomerBase> CustomerBaseParent它将客户ID和客户父ID与0..1到*多样性连接起来.
我构建了一个简化版本来演示我的意思:
为此测试构建包含150.000条记录的表:
CREATE TABLE CustomerBase
(
id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
parent_id int FOREIGN KEY REFERENCES CustomerBase(id),
some_data1 varchar(100),
some_data2 varchar(100),
some_data3 varchar(100),
some_data4 varchar(100),
some_data5 varchar(100),
)
GO
DECLARE @i int = 0
WHILE @i < 150000 BEGIN
INSERT INTO CustomerBase (parent_id, some_data1, some_data2, some_data3, some_data4, some_data5) VALUES (1, newid(), newid(), newid(), newid(), newid()) …Run Code Online (Sandbox Code Playgroud)