Data Access Q2 2016

September 28, 2016

Telerik Data Access Q2 2016 (2016.2.822.1)

New

  • Microsoft SQL Server 2016 is now officially supported by Telerik Data Access

Changed

  • Runtime: Improved memory usage by avoiding back references in Telerik Data Access internals
  • Runtime: Allowed more efficient concurrent usage of contexts, avoiding finalizable objects where possible - Improved the achievable concurrency by restricting the amount of work the GC has to perform. The benefits are reduced time spent in the GC and more direct reclamation of unreachable memory, resulting in more stable behavior of the working set and improved GC gen0/gen1 ratio under load.

Fixed

  • OpenAccessContext.GetLastConflicts() will no longer swallow exceptions
  • Improved prefetching of collections to avoid data inconsistencies - When prefetching is used (via .Include() or .LoadWith()) and there is no prefetched data in the first 50 results (or 500 in case of second level cache), the reading step can fail with inconsistenly read data. The code change needed for this bug fix also improves the prefetching behavior in that there are more paralllel fetches used now and point fetches are avoided.
  • Improved handling of expections happening on database driver level as part of the integrated connection pool management - Now NullReferenceException is avoided and original exception can be obtained.
  • Fixed implementation of OpenAccessContext.GetOriginalValues() for collections and dictionaries - If OpenAccessContext.GetOriginalValues() is called on a persistent field or property of type List or Dictionary<k,v> sometimes the latest in-memory version of the data was returned and not the last persisted version. Calling it after a FlushChanges followed by a change to the collection or dictionary the Runtime now will persist the change consistently.</k,v>
  • Context.SaveChanges(AggregateAll) flag is not respected and only the first OptimisticVerificationException is thrown - The context method SaveChanges(AggregateAll) was not collecting all errors when OptimisiticVerificationExceptions occur. Now the behavior can be switched between 'AggregateAll' and 'FailFast'. Only OptimisticVerificationExceptions will be aggregated, other kinds of exeptions will still have the default 'FailFast' behavior.
  • TrackedList/TrackedBindingList support improvements - Improved integration of TrackedList<T> and TrackedBindingList<T> and runtime logic maintaining original values to avoid side effects added in virtual methods of the list types.
  • Parallel Fetching changes - Disabled parallel fetching when Skip, Take, Single(OrDefault) and First(OrDefault) are present in an outer LINQ query
  • Memory leak in Second Level Cache - Resolved a missing clean-up of temporary data structures in Second Level Cache related to flushed data
Have a feature request?

Post your feedback via the Data Access feedback portal or the public forums

What's new across all Telerik products?

See the updates feed

Next Steps

Download for free

Get your fully functional free copy of Data Access.

Get Data Access Sample Kit

Including demos and articles to get you started.

Suggest new features

Help us shape our roadmap.