2014-10-16 2 views
0

У меня возникли проблемы с работой некоторых элементов OrmLite - я слишком долго использовал базы данных документов! Учитывая, у меня есть следующие модели:Ormlite exception on join query

public class ListingEvent 
{ 
    public ListingEvent() 
    { 

    } 

    [AutoIncrement] 
    [PrimaryKey] 
    public int Id { 
     get ; 
     set; 
    } 

    public string Name { get; set; } 

    [ForeignKey(typeof(Location))] 
    public int LocationId { 
     get; 
     set; 
    } 
} 

public class Location 
{ 
    public Location() 
    { 
     ListingEvents = new List<ListingEvent>(); 
    } 

    [AutoIncrement] 
    [PrimaryKey] 
    public int Id { 
     get ; 
     set; 
    } 

    public string Name { get; set; } 

    [Reference] 
    public List<ListingEvent> ListingEvents { get; set; } 
} 

И следующий запрос:

var listingEvents = db.Select<ListingEventDto> (
        db.From<Model.ListingEvent>() 
        .Join<Model.ListingEvent, Model.Location>() 
        .Where<Model.ListingEvent> (le => locationIds.Contains (le.LocationId) && le.Name.Contains (request.Query)) 
        .Or<Model.ListingEvent, Model.Location>((le, l) => l.Name.Contains(request.Query) == true) 
        .Limit (skip: request.Skip, rows: request.Take)); 

Почему на земле я получаю эту ошибку (Baring в виду, я перепробовал все коннотации этого!):

error CodeInvalidOperationException message variable 'l' of type 'Model.Location' referenced from scope '', but it is not defined 

ответ

1

Этот вопрос был ниже в выражении, то есть выражение метода на колонке из присоединяемой таблицы:

.Or<Model.ListingEvent, Model.Location>((le, l) => l.Name.Contains(request.Query)) 

Эта проблема была разрешена in this commit, доступный с v4.0.33 +, что было published to MyGet.

+0

Отлично - проверено и теперь работает как шарм - приветствия :) – iwayneo