Vb.net 自定义延迟加载开放访问ORM

Vb.net 自定义延迟加载开放访问ORM,vb.net,telerik-open-access,Vb.net,Telerik Open Access,我正在使用OpenAccesORM,我需要一种简单的方法来获取父实体信息并定制相关子实体信息。我的意思是,当我要求订单时,我只需要订单信息,并且能够加载或不加载订单行信息 如果我有: Public Class Order Public Property Number As Long Public Property Description As String Public Property OrderLines as List(of OrderLines) = new List(of OrderL

我正在使用OpenAccesORM,我需要一种简单的方法来获取父实体信息并定制相关子实体信息。我的意思是,当我要求订单时,我只需要订单信息,并且能够加载或不加载订单行信息

如果我有:

Public Class Order
Public Property Number As Long
Public Property Description As String
Public Property OrderLines as List(of OrderLines) = new List(of OrderLines)
End Class
如果我想要,我可以做什么例如:

Dim e as new EntitiesModel()
Dim q as Order = (from c in e.Orders
                 where c.Number = 5
                 select c).FirstOrDefault()
我需要查询只是检索订单数据,而不是订单行,这似乎是OA默认的做法

编辑:我已经试过了:

            Using dbcontext As New EntitiesModel()
            Dim fetchStrategy As New FetchStrategy()
            dbcontext.FetchStrategy = fetchStrategy
            Dim q As Order
            q = (From c In dbcontext.Orders
                Where c.PK_Order = 79
                Select c).FirstOrDefault
            For Each olFound In q.OrderLines
                Dim i As Integer
                Console.WriteLN(olFound.Description&VbNewLine)
            Next
        End Using

我仍然在接收订单行数据,我并不总是需要这些数据。telerik的大多数示例都将加载相关数据,但我希望相反。有没有办法指定我想做还是不想做?我希望澄清:/

您需要声明“订单行”应该是延迟加载的。您可以使用FetchPlans API,或者声明在配置中显式地延迟加载关联

如果使用仅代码映射,则可以定义加载行为:

orderLineConfiguration.HasAssociation(x => x.Order).WithLoadBehavior(Telerik.OpenAccess.LoadBehavior.Lazy).WithOpposite(c => c.OrderLines);

订单行现在将被延迟加载。请参阅文档和。

欢迎来到SO!我们希望用户在这里提问之前已经做了很多“尝试和错误”。请告诉我们你做了什么以及为什么不适合你。谢谢,我在理解什么是延迟加载和OpenAccess的工作方式时遇到了一些问题。。。但是通过你提供的链接,我得到了它=)很高兴我能帮上忙。我还建议进一步研究文档以及示例包,因为OpenAccess中有很多非常有用的API。