开发者

Why is Entity framework loading data from the db when I set a property?

开发者 https://www.devze.com 2023-02-14 14:32 出处:网络
I have two tables (there are more in the database but only two are involved here). Account and AccountStatus, an account can have an AccountStatus (active,inactive etc).

I have two tables (there are more in the database but only two are involved here).

Account and AccountStatus, an account can have an AccountStatus (active,inactive etc).

I create a new Account and set a couple of properties but when I reach this code:

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

2. account.AccountStatus = status;

3. db.Accounts.AddObject(account);

The first line executes fine, but when I reach the second line it takes a REALLY long time, and when I step in to the code it seems that every single account is loaded from the database.

I don't see why it should even want to load all the accounts?

We use Entity Framework 4 and Poco and we have lazy loading enabled.

Any suggestions?

C开发者_运维问答heers

/Jimmy


You have to be careful which constructs you use to fetch data, as some will pull in the whole set and filter afterword. (aside: the long time delay may be the database being created and seeded, if there isn't one already, it will occur the first time you touch it, likely with a query of some sort. Also remember that when you retrieve a whole dataset, you may in actuality only have what amounts to a compiled query that won't be evaluated until you interact with it).

Try this form instead and see if you have the same issue:

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

精彩评论

暂无评论...
验证码 换一张
取 消