我正在使用EF6
这是我的班级
public partial class tbl_Persons
{
public int ID { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
}
使用此代码时,服务器将向客户端传输多少(字节)?
using (var db = new testEntities())
{
var q = db.tbl_Persons.FirstOrDefault(a => a.ID == 1234).Age;
}
刚转移{(年龄)(1字节)}或转移所有属性{(ID +姓名+年龄)(10字节)}然后在客户端选择年龄?
我如何只转移(年龄)(1字节)? (我需要从服务器传输最少的数据)
答案 0 :(得分:2)
表达式
var q = db.tbl_Persons.FirstOrDefault(a => a.ID == 1234).Age;
相当于
var person = db.tbl_Persons.FirstOrDefault(a => a.ID == 1234);
var age = person.Age;
因此,您首先从数据库中检索并实现整个对象(包含所有属性),然后从结果中获取单个属性(在您的情况下为byte
)。
为了仅提取相关媒体资源,您应该使用不那么简洁但效率更高的Where
+ Select
+ FirstOrDefault
(无谓词版本):
var age = db.tbl_Persons.Where(p => p.ID == 1234).Select(p => p.Age).FirstOrDefault();
或使用查询语法
var age = (from p in db.tbl_Persons where p.ID == 1234 select p.Age).FirstOrDefault();