2013-10-02 3 views
1

После запуска запроса у меня есть следующее сообщение об ошибке:член LINQ не поддерживается перевод на SQL

System.NotSupportedException : The member 'Application.Product.IsValid' has no supported translation to SQL.

Что плохого в следующем запросе?

Часть продукта класса:

public Boolean IsValid 
    { 
     get { return this.isValid; } 
     set 
     { 
      isValid = value; 
     } 
    } 

У меня есть запрос следующим образом:

Table<Product> Producttable = dataContext.GetTable<Product>(); 
      Table<ClientProduct> ClientProducttable = dataContext.GetTable<ClientProduct>(); 

var query = 
       from product in Producttable where product.IsValid == true 
       join clientProduct in ClientProducttable 
       on product.ID equals clientProduct.ProductID 
       where clientProduct.ClientID == clientID 
       orderby product.Name ascending 
       select product; 

я получаю ту же ошибку, если я

Table<Product> table = dataContext.GetTable<Product>(); 

     IQueryable<Product> query = 
      from row in table 
      where row.IsValid == false 
      select row; 

     return query.ToList<Product>(); 
+5

Попробуйте изменить 'где product.isValid == true' с' где product.Isvalid == true'. (вы ссылаетесь на поле, теперь вы ссылаетесь на свойство). – AgentFire

+0

Isvalid или IsValid? – Vasiliy

+1

В качестве побочного примечания вы можете использовать ярлык свойств, чтобы сохранить объявление поля поддержки, так как вы используете getter, а setter не делает ничего экзотического: 'prop bool IsValid {get; задавать; }; ' –

ответ

1

Mark ваш Isvalid объект с Column атрибут.

Я считаю, что для перехода к таблице базы данных для интерфейса Linq-to-sql должен быть атрибут column. Также как и его параметры (атрибута), такие как ColumnName или аналогичные.

Смежные вопросы