2012-10-22 2 views
2

Npoco을 사용하려하지만 FetchOneToMany의 일부 문제가 발생했습니다.Npoco FetchOneToMany를 사용하는 방법?

2 개의 테이블을 함께 조인 모든 열을 출력하는 SQL 문이 있습니다.

[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"); 
+0

SQL을 게시 할 수 있습니까? – Schotime

+0

실제 SQL을 게시 할 수는 없지만 정확하게 동일하게 만들 수 있습니다. – chobo2

답변

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)) 

일반 매개 변수가 나열된 순서대로 열을 선택해야합니다.

+0

"제네릭 매개 변수가 나열된 순서대로 열을 선택했는지 확인하십시오"라는 의미가 확실하지 않습니다. – chobo2

+0

a. *, b. *는 ...와 같은 순서로 나타납니다. 표 A 열은 B 앞에옵니다. – Schotime

+0

그래요. 참고로 npoco와 다른 관계 확장의 차이점은 무엇입니까? – chobo2