实体框架以字节为单位传输数据

时间:2017-06-07 15:02:26

标签: entity-framework entity-framework-6 size byte transfer

我正在使用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字节)? (我需要从服务器传输最少的数据)

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();