为什么Entity框架在设置属性时从db加载数据?

时间:2011-03-02 15:35:00

标签: entity-framework-4 poco

我有两个表(数据库中有更多表,但这里只涉及两个表) Account和AccountStatus,一个帐户可以有AccountStatus(活动,非活动等)。

我创建了一个新帐户并设置了几个属性,但是当我到达此代码时:
1. var status = db.AccountStatuses.SingleOrDefault(s => s.ID ==(long)AccountStatusEnum.Active);

2. account.AccountStatus = status;
3. db.Accounts.AddObject(account);
第一行执行正常,但是当我到达第二行时,它需要很长时间,当我进入代码时,似乎每个帐户都从数据库加载。

我不明白为什么它甚至要加载所有帐户?
我们使用Entity Framework 4和Poco,我们启用了延迟加载。

有什么建议吗? 干杯
/麦

1 个答案:

答案 0 :(得分:2)

您必须小心使用哪些构造来获取数据,因为有些将拉入整个集合并过滤后缀。 (除此之外:长时间延迟可能是正在创建和播种的数据库,如果没有已经存在,则会在您第一次触摸它时发生,可能是某种类型的查询。还要记住,当您检索整个数据库时对于数据集,实际上只有在编译查询之后才能进行评估,直到与它进行交互为止。

请尝试使用此表单,看看您是否遇到同样的问题:

var status = db.AccountStatuses.Where(s => s.ID == (long)AccountStatusEnum.Active);