我正在构建一个应用程序,它将使用EF 6与我的数据库后端进行交互。我已经构建了数据库,所以我将首先采用数据库方法。
其中一个目标是利用DevExpress的网格控制,并允许用户在我的工具表中查看每个工厂的主/细节信息样式。
我需要能够更新/插入所以我认为使用视图不如实际向网格的数据源提供上下文一样好。
我的问题是试图了解Entity Framework所涉及的开销。如果我的表包含20列,但我的网格只需要其中10个用于查看/更新/插入,应用程序是否仍将所有信息加载到内存中?我最好使用网格视图和某种形式的自定义例程进行更新吗?
答案 0 :(得分:1)
它不一定要加载所有列。如果你对它很聪明,你只能让它使用LINQ to Entities加载你需要的那些列。
例如:
var records = db.MyTable.Where(...Some condition...).ToList();
将返回所有列。
但这样做
`var records = db.MyTable.Where(...Some condition...).Select(x => new MyModel { ...some fields here... }
只会加载指定的字段。
之前我曾与DevExpress和Entity Framework合并过,我可以告诉你,只要你了解你在Entity Framework中所做的事情,并且不能做到这一点,它就会相对轻松。 ;只是盲目地让你的网格进行可能变得昂贵的查询。