Entity Framework versus Datasets
Posted on 2013-11-24
(Related to another question)
I am re-architecting an application that focuses on group collaboration around interactively building and annotating a complex diagram.
Average total data size for one group session for will probably be somewhere between 150KB and 1MB.
Currently the group session data is stored entirely in memory in a large object containing datasets and supporting variables. This data is synced to disk during diagram update/writes. There are about a dozen tables in the data object. I make extensive use of tableadapters.
The data is kept in memory for fast diagram form refreshes (one participant could do a small write, which might change the relationships on the diagram, which then has to be refreshed to all other participants).
Let's assume that keeping the data in memory is the correct approach for performance/scaling concerns (that was the other question).
The question here is, is there a benefit to using Entity Framework in this situation?
My understanding is that datasets work well for memory access of small data volumes, which I have, whereas Entity Framework always read/writes from/to disk. So, maybe I could use EF for the disk syncing, but I'd still need all the dataset logic anyway for the in-memory data handling. So why would I want to add EF in that case (except for easier DB maintenance, which maybe plenty of justification?)
Or is there some way of managing "dataset-like" information in memory that is complimentary to EF? My diagram display form used to have gridviews, however, that's all been replaced with custom div collections, so there's no real dependency on datasets on the GUI side. The business logic does make extensive use of datatables, however, I'm assuming they could be loaded other than from tableadapters (though that's very convenient, until I bump into the DB table definition updates issue).
So, maybe to summarize, the question is, would it be worth it to introduce Entity Framework in this situation, for DB management, and if so would I just keep the dataset object for memory, or would there be some alternative in-memory data management approach?
Any input on this would be appreciated.