2014-11-18 2 views
34

При попытке расширить свойство навигации с помощью лямбда следующим образом:Breeze Sharp - Expand не работает с лямбда-выражения

query = query.Expand(x => x.Dealers); 

Мой запрос не с

This is a failure message

Внутренняя Exception

Inner Exception

Inner Exception Message:

Выражение 'x => x.Dealers' не является допустимым выражением для пути навигации. Единственными поддерживаемыми операциями внутри тела выражения лямбда являются MemberAccess и TypeAs. Выражение должно содержать как минимум один MemberAccess и не может заканчиваться TypeAs.

Однако при попытке расширить с помощью параметра строки:

query = query.Expand("Dealers"); 

Все кажется работать правильно.

Мой "Регион" Бриз Клиент Entity:

public class Region : BaseEntity 
{ 
    public Region(); 

    public NavigationSet<Dealership> Dealers { get; set; } 
    public string Name { get; set; } 
    public Region Parent { get; set; } 
    public int? ParentId { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int RegionId { get; set; } 
    public string ShortName { get; set; } 
    public RegionType Type { get; set; } 
} 

Мой Dealership навигации объект:

public class Dealership : BaseEntity 
{ 
    public Dealership(); 

    public DateTime ActiveFrom { get; set; } 
    public DateTime? ActiveTo { get; set; } 
    public Brand Brand { get; set; } 
    [ForeignKey("Brand")] 
    public int BrandId { get; set; } 
    public string DealerCode { get; set; } 
    public DealerGroup DealerGroup { get; set; } 
    [ForeignKey("DealerGroup")] 
    public int? DealerGroupId { get; set; } 
    public virtual NavigationSet<DealerIR> DealerIRs { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int DealershipId { get; set; } 
    public bool IsActive { get; set; } 
    public string Line1 { get; set; } 
    public string Line2 { get; set; } 
    public string Line3 { get; set; } 
    public string Line4 { get; set; } 
    public string Line5 { get; set; } 
    public string Name { get; set; } 
    public string PostCode { get; set; } 
    public Region Region { get; set; } 
    [ForeignKey("Region")] 
    public int RegionId { get; set; } 
} 

Моя последняя попытка была сделать внешний ключ отношения явно через "ForeignKey" аннотирования данных, но результирующая ошибка остается прежней.

Я использую бриз sharp v0.6.0.3.

ОБНОВЛЕНИЕ 1: Это не тот же запрос, что и выше, но тот же результат. Просто скриншот из исходного кода Breeze.Sharp, который я прошел. Увеличенное изображение here

enter image description here

+0

Что первоначальный запрос выглядит? то есть «запрос» в вашем примере –

+1

Привет, Джей, исходный запрос: EntityQuery query = new EntityQuery (); В несколько другой заметке я решил еще одну проблему расширения, которую я получил из-за того, что у меня не было моих «многих» свойств навигации, установленных в «NavigationSet» (они были просто просто List <>) на моих объектах Breeze клиента , Я исправляю это во всем графе объектов. Может быть, это связано? – ProxyTech

+0

Я изменил все свойства навигации на NavigationSet <> ... до сих пор нет кубиков. Будет обновлять OP с помощью кода Breeze.Sharp, где он не работает ... возможно, это поможет .. – ProxyTech

ответ

1

Попробуйте как следующее

query = query.ToList().Expand(val => val.Dealers); 
+0

Я не думаю, что метод расширения Expand доступен даже для Linq2Objects? – ProxyTech

+0

Пожалуйста, добавьте объяснение в свой ответ. –

1
query = query.Include(val => val.Dealers); 
+3

добавить объяснение с кодом. – Sandeep