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

.net-3.5 c# entity-framework

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

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

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

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

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

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

一般承认的答案

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

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

您也可以投影到POCO。

不能告诉EF检索具有相关City Citizen类型的对象,但仅填写City.Name不会部分实现实体。当您只需要几个字段时,可以使用视图/演示模型或DTO而不是实体。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因