我正在使用.NET 3.5中的Entity Framework
我有两个表,0-1到很多关系。让我们说公民和城市。每个公民都有外键列(ID),将他连接到城市。
当我选择单身公民时,我还需要选择他所居住的城市的名称。 因为城市表包含大量与公民无关的数据,所以我不想从数据库中检索它以节省一些带宽。
目前我正在使用Include()函数,但它从城市获取与公民相关的所有数据,而我只需要名称。
有没有办法编写查询以从EF中的整行中选择单个单元格而无需创建新的类或接口或存储库? 这是我的包括:
Citizen citizen = db.Citizens.Include("Cities").First(p => p.citizen_id == id);
答案 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而不是实体。