Skip to content

v4.5.0

Compare
Choose a tag to compare
@JeremyCaney JeremyCaney released this 30 Sep 23:24
· 1720 commits to master since this release

This update focuses primarily on minor feature improvements, such as new extension methods for Topic (7d08ac6) and AttributeValueCollection (9795dd1), as well as new utility functions in the SQL schema (1e9b1d5), such as GetUniqueKey() (a2ac659) and GetTopicIDByUniqueKey() (ea97f91). It also includes a number of bug fixes as well as some cleanup. Most notably, it fixes a bug where existing attributes values cannot be reset to empty under certain circumstances—notably include those involving the OnTopic Editor (1e4812f).

Features and Improvements

  • Added MarkClean() methods to AttributeValueCollection to improve the semantics for IsDirty tracking and to better account for deleted attributes (1e4812f)
  • Added FindAll() (4dbf872), FindFirstParent() (aa54ccf), and GetContentTypeDescriptor() (026e7a3) extension methods for Topic (7d08ac6)
  • Added GetDouble() (148a1b1) and SetDouble() (23f9ce2) extension methods to AttributeValueCollection (9795dd1)
  • Added GetChildTopicIDs() (8e0eca5) and FindTopicIDs() (1dfd333) functions in order to facilitate tree traversal and lookups in SQL
  • Added GetUniqueKey() (a2ac659), GetTopicIDByUniqueKey() (ea97f91), and GetExtendedAttribute() (28a4694) functions, as well as a UniqueKeyIndex view (b09ca5d) to the SQL database schema (1e9b1d5)
  • Added and implemented (68492d2) the AddOrReplace() (cd92791) and TryAdd() (027ae25) methods to the StaticTypeLookupService to simplify inheritance (6687431)
  • Significant updates to GenerateNestedSet to support transactions and topic ordering, while eliminating the need for Topics.RangeRight to allow NULL (c6b50f3)

Bug Fixes

  • Fixed a bug where a deleted attribute might not get saved since deleted attributes didn't result in the AttributeValueCollection being marked as IsDirty() (1e4812f)
  • Updated GetAttributes() stored procedure as a function (aa040ef) to return the latest version of both indexed and extended attributes (05ae378)
  • Used UTC time for @Version parameter when updating the database via SqlTopicRepository.Save() to avoid time mismatches between computers (d85743d)
  • Updated RelatedTopicCollection.RemoveTopic() to remove reciprocal IncomingRelationships in order to avoid stale content or orphaned references (4514244)
  • Improved validation for TopicRepositoryBase.Delete() (67b70ca), including checks for isRecursive mismatches (29c904a) and orphaned DerivedTopics (58057e1), as well as handling of orphaned relationships (13e4fe9, 2550779)

Cleanup

  • Cleanup of SQL objects (c997b0e), including moving UniqueKeyIndex (4a17205), LeftRightRange (e565f0e), and Hierarchy (now AdjacencyList) to the Utilities schema (17b98b4), and removal of legacy SimpleIntListToTbl and Split functions (f0e781b).
  • Applied updates based on new code analysis warnings (b00cfad)

Potentially Breaking Changes

  • Moving, renaming, and deleting of utility objects in SQL database schema (c997b0e)
  • Setting default for ITopicRepositoryBase.Delete()'s isRecursive parameter from false to true to maintain backward compatibility (1773113)

Note: These aren't expected to break any actual implementations. In particular, utility objects are not referenced from the products, and most weren't previously documented, so it's not expected that they would have been integrated with or called from third-party implementations. Similarly, while the change to ITopicRepositoryBase.Delete() changes the default, it does so to avoid a behavioral change.