2011年9月8日 星期四

PetaPOCO使用JOIN回傳Muti-POCOs

新的案子由於一些考量,不使用Entity Framework
所以找了一個替代方案-PetaPOCO
它是一個輕量級的ORM
這裡這先不介紹它那麼多了
先memo下來我在使用SQL join多table時,要對應到相對的POCO時所發生的問題

使用Fetch時,無法回傳對應的POCO
例:

var sql = PetaPoco.Sql.Builder
                .Append("SELECT Test_Basic.*, Test_Detail.*")
                .Append(" From Test_Basic ")
                .Append(" JOIN Test_Detail ON Test_Basic.MID = Test_Detail.TID Where Test_Basic.Account = 'test' ");
 var test = databaseContext.Fetch<TestBasic, TestDetail>(sql);

後來才發現是TestBasic那個POCO裡面
少了一個TestDetail的關聯,補上如下:

[ResultColumn]
 public TestDetail TestDetailObject { get; set; }

這樣就抓的到了
另外欄位也記得加上PetaPOCO的annotation

[PetaPoco.Column]
 public string Account { get; set; }


或者是拿掉[ExplicitColumns]

沒有留言:

張貼留言