Entity framework 以字节为单位传输数据

Entity framework transferred data in bytes

我正在使用 EF6

这是我的class

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 字节)}然后select 客户端上的年龄?

如何只传输 (Age)(1 byte)? (我需要从服务器传输最少的数据)

表达式

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