We intentionally designed RadChat to be completely decoupled from the data source type. This means you have the freedom to do whatever you want, so whatever you feel is the most efficient for your database type or API type can be used.
If what you are asking is "how do I load and save data form a database?" This is outside the scope of what the Telerik UI controls can help you with. That data layer is your business logic's responsibility. The only thing the RadChat control cares about is that you have an ItemsSource (e.g. Observablecollection) to bind to.
Here are some additional resources for you to keep researching
To address the concerns you mentioned in your comment, I've built you a small demo so that I could better convey what I was explaining about using OnBindingContextChanged to track when an item is scrolled into the viewport.
If you build and run the attached app, you'll see the following result at runtime. As you scroll up and down, you'll see the Debug Output window will show you the Id of the data item that was just rendered.
> Find the relevant login in LeftMessageView.xaml.cs and RightMessageView.xaml.cs.
Important: There is still a bit of work to do to tie that item-rendered knowledge into some sort of database call and pull the next items, but this is a place that you can start. If this is a business critical feature and you're stuck with the implementation, this team can help.
Lance | Manager Technical Support Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.