实体框架从行中选择单个值

时间:2010-06-04 18:52:27

标签: c# entity-framework .net-3.5

我正在使用.NET 3.5中的Entity Framework

我有两个表,0-1到很多关系。让我们说公民和城市。每个公民都有外键列(ID),将他连接到城市。

当我选择单身公民时,我还需要选择他所居住的城市的名称。 因为城市表包含大量与公民无关的数据,所以我不想从数据库中检索它以节省一些带宽。

目前我正在使用Include()函数,但它从城市获取与公民相关的所有数据,而我只需要名称。

有没有办法编写查询以从EF中的整行中选择单个单元格而无需创建新的类或接口或存储库? 这是我的包括:

            Citizen citizen = db.Citizens.Include("Cities").First(p => p.citizen_id == id);

1 个答案:

答案 0 :(得分:2)

你可以通过投射来做到这一点,例如

var c = from c in db.Citizens
        where c.citizen_id == id
        select new
        {
            Name = c.Name,
            CityName = c.City.Name
        };

您也可以投射到POCO。

无法告诉EF检索Citizen类型的对象,其中包含相关的City,但只填充City.Name .EF不会部分实体化。当您只需要几个字段时,请使用视图/演示模型或DTO而不是实体。