EF5 db.Database.SqlQuery映射返回的对象

我有两个C#类

public class SearchResult { public int? EntityId { get; set; } public string Name { get; set; } public Address RegisteredAddress { get; set; } } 

 public class Address { public int? AddressId { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Address3 { get; set; } } 

这在dbContext调用中用于通过EF5从数据库中映射返回的对象

 using (DbEntities db = new DbEntities()) { querySearchResult = db.Database.SqlQuery( @"SELECT e.entity_id AS EntityId, e.entity_reg_name AS Name, a.address_1 AS [RegisteredAddress.Address1] FROM entity AS e LEFT JOIN address AS a ON e.entity_reg_addr_id = a.address_id", objectParameterList.ToArray()).ToList(); } 

我遇到的问题是,即使返回了地址数据,我也似乎无法映射地址对象。 searchResult映射的其他属性很好。

SqlQuery不支持Complex Type

你应该做的是:

 internal class TempResult { public int? EntityId { get; set; } public string Name { get; set; } public int? AddressId { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Address3 { get; set; } } var tempResults = db.Database.SqlQuery( @"SELECT e.entity_id AS EntityId, e.entity_reg_name AS Name, a.address_1 AS [RegisteredAddress.Address1] FROM entity AS e LEFT JOIN address AS a ON e.entity_reg_addr_id = a.address_id", objectParameterList.ToArray()).ToList(); querySearchResult = tempResults.Select(t => new SearchResult { EntityId = t.EntityId, [...] RegisteredAddress = new Address { AddressId = t.AddressId, [...] } }