Petapoco - 找不到分裂点

时间:2016-11-01 10:38:47

标签: c# .net database orm petapoco

我一直在与peta poco及相关类斗争,并且收到错误“找不到PetaPocoProofOfConcept.Resource和PetaPocoProofOfConcept.BookingType之间的分裂点。”

我的两个课程是:

[TableName("Resource"), PrimaryKey("Id")]
public class Resource
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public long MinTimeSpan { get; set; }
    public long MaxTimeSpan { get; set; }
    public long FixedTimeSpan { get; set; }
    public DateTime ActiveStart { get; set; }
    public DateTime ActiveEnd { get; set; }
    public bool Active { get; set; }
    public BookingType BookingType { get; set; }
    public int StatusId { get; set; }
}

[TableName("BookingType"), PrimaryKey("Id")]
public class BookingType
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

执行这行代码时出错:

using (var connection = new SqlConnection(ConnectionString))
        {
            connection.Open();
            var resources = new Database(connection).Query<Resource, BookingType>("SELECT * FROM [Resource]").ToList();
        }

我一直在阅读一些文档,但似乎无法找到为什么会失败的任何答案。有谁知道吗?

谢谢:)

1 个答案:

答案 0 :(得分:2)

这不是Petapoco多映射的工作方式。 您可以通过以下方式使用该语法:

var posts = db.Fetch<post, author>(@"
        SELECT * FROM posts 
        LEFT JOIN authors ON posts.author = authors.id ORDER BY posts.id
        ");

这为您提供了两个帖子和作者列表。

如果你想执行更复杂的映射(比如你的例子),你需要写一个这样的回调:

var posts = db.Fetch<post, author, post>(
        (p,a)=> { p.author_obj = a; return p; },
        @"SELECT * FROM posts 
        LEFT JOIN authors ON posts.author = authors.id ORDER BY posts.id
        ");

More info on Petapoco Multi mapping