实体框架传输字节
问题描述:
数据我使用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个字节)},然后在客户端选择年龄?
如何仅传输(Age)(1字节)? (我需要从服务器传输的最小数据)
答
表达
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();
+0
这对我来说是最好的答案 –
顺便说一句,下面的代码'var q = db.tbl_Persons.FirstOrDefault(a => a.ID == 1234).Age;'可能会抛出。你应该写成:'var q = db.tbl_Persons.FirstOrDefault(a => a.ID == 1234)?年龄;' – tschmit007
顺便说一句:存储年龄是有风险的(存储出生日期/年)。将一个人的年龄限制在128岁是有风险的; – tschmit007
谢谢。但这不是我真正的课堂。它只是为了测试 –