我使用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包含很多属性,以匿名方式执行此操作会非常麻烦。