12

I have two C# classes

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

and

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

this is used in a dbContext call to map out the returning objects from a database via EF5

using (DbEntities db = new DbEntities())
{
    querySearchResult = db.Database.SqlQuery<SearchResult>(
        @"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();
}

The problem I'm having is that I cant seem to get the address object mapped even though there is address data returned. The other properties of the searchResult map fine.

1 Answer 1

14

SqlQuery doesn't support Complex Type

What you should do is:

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<TempResult>(
    @"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,
            [...]
        }
}
Sign up to request clarification or add additional context in comments.

2 Comments

Could you define complex type? If a class inherits, would the parent/base class props work? And is this still valid in EF 6.2? I can't find much about this on msdn...
what if some property is a List<SomeClass> ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.