在Dapper中使用嵌套属性作为参数

时间:2016-06-30 16:19:40

标签: vb.net dapper

我使用Dapper连接到我的MySQL数据库。我只是重写了一些查询以支持嵌套映射。像这样:

Public Class Entity1
    Public Property Entity1Id As Integer
    Public Property AssociatedEntity2 As Entity2
End Class

Public Class Entity2
    Public Property Entity2Id As Integer
    Public Property Name As String
End Class


Dim SQL as String = "SELECT * FROM Entity1 e1 INNER JOIN Entity2 e2 on e1.Entity2Id = e2.Entity2Id"
db.Query(Of Entity1, Entity2, Entity1)(SQL,
                                    Function(e1, e2)
                                        e1.AssociatedEntity2 = e2
                                        Return e1
                                    End Function, splitOn:="Entity2Id")

这很好用,但请考虑这个更新方法:

db.Execute("UPDATE Entity1 SET Entity2Id = @AssociatedEntity2.Entity2Id WHERE Entity1Id = @Entity1Id", Entity1)

这不起作用,抛出像这样的异常Entity2类型的成员不能用作参数值。在这种情况下,有没有办法访问Entity2Id

我知道我可以使用匿名类型并手动映射每个属性,但我真正的Entity1包含很多属性,以匿名方式执行此操作会非常麻烦。

0 个答案:

没有答案
相关问题