【发布时间】:2011-06-20 22:11:05
【问题描述】:
我正在使用带有实体框架和自我跟踪实体的 WPF 进行个人项目。我有一个 WCF Web 服务,它公开了一些用于 CRUD 操作的方法。今天我决定做一些测试,看看这个服务实际上会发生什么,即使我预料到会发生这样的事情,我真的很失望。问题在于,对于一个对象的简单更新(或删除)操作 - 假设 Category 我将整个对象图发送到服务器,包括其所有父类别、它们的项目、子类别及其项目等。我的情况是,它是一个非常小的数据库上的 170 KB xml 文件(2 个主要类别,总共约 20 个和约 60 个项目)。我无法想象如果我有一个非常大的数据库会发生什么。
我尝试在 google 上搜索一些关于使用 STE 进行流量优化的文章,但没有成功,所以我决定在这里询问是否有人做过类似的事情,知道一些好的做法等。
我想出的一种可能方法是通过更多服务调用来获取每个对象所需的数据:
return context.Categories.ToList();//only the categories
...
return context.Items.ToList();//only the items
代替:
return context.Categories.Include("Items").ToList();
这样,类别和项目将被分开,并且在进行更改或删除某些对象时,通过网络发送的数据会更少。
你们中有人遇到过类似的问题吗?你们是如何解决的或者是如何解决的?
【问题讨论】:
-
不使用自我跟踪实体的一个原因。我认为它有一些开销,因为原始值也可能通过线路传输。
-
是的,他们是。我还认为,在优化和创建严肃的应用程序方面,最好只使用 ADO.NET 或其他技术,您不必发送数兆字节的数据来更改单个字母,而不管实体框架的其他好处为您提供。它们不足以让我(可能不仅仅是我)闭上眼睛。
标签: wpf wcf entity-framework self-tracking-entities