PetaPoco是否支持组件映射?

时间:2018-03-21 10:11:40

标签: c# umbraco petapoco

由于我是PetaPoco的新手,也是NHIbernate的正式用户,我想知道是否以及如何使用petapoco映射组件。

两个班级:

[ExplicitColumns]
public class Event{
     [Column]
     public int Id {get;set;}
     [Column]
     public DateTime Start {get;set;}
     [Column]
     public DateTime Start {get;set;}
     ...
     [???]
     public EventLocation Location {get;set;}
}

[ExplicitColumns]
public class EventLocation{
     [Column]
     public int Id {get;set;}
     [Column]
     public string Name {get;set;}
     [Column]
     public string Street {get;set;}
     [Column]
     public string Zip {get;set;}
     [Column]
     public string City {get;set;}
}

有没有办法用PetaPoco来映射?目前,事件位置不会持久存在。我是否必须编写自定义组件映射器?

更新:我尝试过tims解决方案(我自己发现了一个模拟解决方案),但现在我遇到了同名属性的问题。 EventLocations的ID已正确设置,但不适用于Event参考。

1 个答案:

答案 0 :(得分:0)

是的,PetaPoco确实支持多poco查询。这里有一个博客,其中包含一些示例代码:http://blogs.lessthandot.com/index.php/desktopdev/mstech/csharp/more-petapoco-id-s-and/

理论上,假设您使用[ResultColumn]属性装饰您的Location属性,您应该可以执行以下操作(请注意,这只是说明性示例代码,可能实际上不适用于您的数据库):

var results = db.Query<Event, EventLocation>(@"
                          SELECT Event.*, EventLocation.* 
                          FROM Event 
                            INNER JOIN EventLocation ON Event.LocationID = EventLocation.Id );