I see now, the problem is at the linq query:
IQueryable<CustomizedDomain> query = (
from d in metaData.Domains
join e in metaData.ExternalIps
on d.ExternalIpId equals e.Id
select new CustomizedDomain { Id = d.Id, MerchantId = d.MerchantId, PrivateLabelId = d.PrivateLabelId, Domain = d.Domain, IsValid = d.IsValid, Notes = d.Notes, ExternalIpAddress = e.IpAddress, HasSslCert = d.HasSslCert }
).TakePage(pageNumber, maximumRows).Sort<CustomizedDomain>(sortExpression);
There is no metaData information for CustomizedDomain, so I think the problem in at the Sort routine. You can confirm that excluding the Sort and maybe the TakePage operators.
To overcome this you could try executing the query without Sort then sort the result in-memory.
I'm not sure, but I think that if you move the sort inside the query that would avoid the projection problem:
IQueryable<CustomizedDomain> query = (
from d in metaData.Domains
join e in metaData.ExternalIps
on d.ExternalIpId equals e.Id
orderby d.SomeField
select new CustomizedDomain { Id = d.Id, MerchantId = d.MerchantId, PrivateLabelId = d.PrivateLabelId, Domain = d.Domain, IsValid = d.IsValid, Notes = d.Notes, ExternalIpAddress = e.IpAddress, HasSslCert = d.HasSslCert }
).TakePage(pageNumber, maximumRows);
Another thing you can do is add a your custom property directly on a partial class of DomainEntity instead of create a subclass.