LINQ to SQL Translation

Posted by Ben on Stack Overflow See other posts from Stack Overflow or by Ben
Published on 2010-03-15T23:09:05Z Indexed on 2010/03/16 19:41 UTC
Read the original article Hit count: 323

Filed under:

Hi,

Depending on how I map my linq queries to my domain objects, I get the following error

The member 'member' has no supported translation to SQL.

This code causes the error:

public IQueryable<ShippingMethod> ShippingMethods {
    get {
        return from sm in _db.ShippingMethods
               select new ShippingMethod(
                   sm.ShippingMethodID, 
                   sm.Carrier,
                   sm.ServiceName, 
                   sm.RatePerUnit, 
                   sm.EstimatedDelivery, 
                   sm.DaysToDeliver, 
                   sm.BaseRate, 
                   sm.Enabled
                );
    }
}

This code works fine:

public IQueryable<ShippingMethod> ShippingMethods
{
    get
    {
        return from sm in _db.ShippingMethods
               select new ShippingMethod
               {
                   Id = sm.ShippingMethodID,
                   Carrier = sm.Carrier,
                   ServiceName = sm.ServiceName,
                   EstimatedDelivery = sm.EstimatedDelivery,
                   DaysToDeliver = sm.DaysToDeliver,
                   RatePerUnit = sm.RatePerUnit,
                   IsEnabled = sm.Enabled,
                   BaseRate = sm.BaseRate
               };
    }
}

This is my testmethod I am testing with:

[TestMethod]
public void Test_Shipping_Methods() {
    IOrderRepository orderRepo = new SqlOrderRepository();
    var items = orderRepo.ShippingMethods.Where(x => x.IsEnabled);
    Assert.IsTrue(items.Count() > 0);
}

How does the way in which I instantiate my object affect the linq to sql translation?

Thanks Ben

© Stack Overflow or respective owner

Related posts about linq-to-sql