我一直在玩这个,因为它看起来感觉很像记录的帖子/用户示例,但它略有不同,并不适合我.
假设以下简化设置(联系人有多个电话号码):
public class Contact
{
public int ContactID { get; set; }
public string ContactName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}
public class Phone
{
public int PhoneId { get; set; }
public int ContactID { get; set; } // foreign key
public string Number { get; set; }
public string Type { get; set; }
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望最终能够返回一个与多个Phone对象联系的东西.这样,如果我有2个联系人,每个联系人有2个电话,我的SQL将返回一个连接,作为结果集共4行.然后Dapper将弹出2个接触对象,每个接触对象有两部手机.
这是存储过程中的SQL:
SELECT *
FROM Contacts
LEFT …
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何使用Dapper有效地选择聚合对象?
有没有可能让dapper实例化嵌套对象,如果是这样,有没有这个实例的例子?
对于大多数情况,.net原语对我来说已足够,但并非总是如此.hack可能是将外键包含在父类型中作为基元,然后根据这些实例进行实例化.我希望这不是必要的,因为它会在POCO模型中产生不必要的噪音.
我有以下类和数据库模式.我试图使用dapper从数据库中查询这些数据,这将使整个对象图水合.我查看了各种SO问题和测试,但无法弄清楚如何做到这一点.
Author
-AuthorId
-Name
Post
-PostId
-Content
-AuthorId
Comment
-PostId
-CommentId
-Content
Tag
-PostId
-TagId
-Name
Run Code Online (Sandbox Code Playgroud)
public class Author
{
public int AuthorId { get; set; }
public string Name { get; set; }
}
public class Tag
{
public int PostId { get; set; }
public int TagId { get; set; }
public string Name { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Content { get; …
Run Code Online (Sandbox Code Playgroud)