Petapoco - 找不到分割点

3

我一直在苦苦挣扎于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个回答

3
这不是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
        ");

点击此处了解Petapoco多重映射的更多信息


啊,好的,这解释了一些事情。我可能误解了它的工作原理。我会尝试你在这里建议的方法,谢谢。 - Diemauerdk
链接已损坏。 - Tobias
这真的有效吗? 我尝试了完全相同的方法,但两个实体的Id属性都没有设置(=0)。 - Tobias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接