Как использовать Npoco FetchOneToMany?

Я пытаюсь использовать Npoco, но у меня возникают проблемы с FetchOneToMany.

У меня есть оператор sql, который объединяет 2 таблицы вместе, и я вывожу все столбцы.

   [TableName("TableA")]
    [PrimaryKey("Id")]
    public class TableA
    {
        public int Id { get; set; }
        public DateTime EffectiveDate { get; set; }
         public IList<TableB> TableBs { get; set; }
    }

    [TableName("TableB")]
    [PrimaryKey("TableBId")]
    public class TableB
    {
        public int TableBId { get; set; }
        public int SomeNumber { get; set; }
          public int Id { get; set; } // TableA id
    }


Func<TableA, object> func1 = (x) => x.Id;
            Func<TableB, object> func2 = (x) => x.Id;
  var test = RelationExtensions.FetchOneToMany<AdminFeeBandGroup, AdminFeeBand>(unitOfWork.Db, func1,func2,sql, 1,1,"10-18-2012","10-22-2012");

Я передаю 4 параметра в своем реальном запросе. Я получаю результат, и TableBs property заполняется и выглядит хорошо. Однако EffectiveDate по какой-то причине не заполняется и является временем C# по умолчанию.

Что мне не хватает?

Изменить

Это то, что у меня есть в качестве моего запроса

SELECT     TableA.Id, TableA.EffectiveDate, TableB.TableBId, TableB.SomeNumber
FROM         TableA INNER JOIN
                      TableB ON TableA.Id = TableB.Id
WHERE     (TableA.EffectiveDate = @0)


Func<TableA, object> func1 = (x) => x.Id;
            Func<TableB, object> func2 = (x) => x.Id;
  var test = RelationExtensions.FetchOneToMany<AdminFeeBandGroup, AdminFeeBand>(unitOfWork.Db, func1,func2,sql, "10-18-2012");

person chobo2    schedule 22.10.2012    source источник
comment
Я не могу опубликовать настоящий Sql, но я могу сделать так, чтобы он выглядел точно так же.   -  person chobo2    schedule 23.10.2012


Ответы (1)


Вот как это должно работать.

var sql = "select a.*, b.* from tablea a 
    inner join tableb b on a.id = b.id 
    where EffectiveDate = @0"

List<TableA> results = 
    db.FetchOneToMany<TableA,TableB>(x=>x.Id, sql, new DateTime(2012,10,18))

Вы должны убедиться, что ваши столбцы выбраны в том же порядке, что и общие параметры.

person Schotime    schedule 23.10.2012
comment
Я не уверен, что вы имеете в виду, говоря, что ваши столбцы выбраны в том же порядке, что и общие параметры. - person chobo2; 23.10.2012
comment
a.*, b.* находятся в том же порядке, что и ‹TableA,TableB› ...столбцы tableA идут перед B. - person Schotime; 23.10.2012
comment
Да, это была проблема. Кстати, в чем разница между тем, что у вас есть в npoco, и другим расширением отношений, которое вы сделали? - person chobo2; 23.10.2012