v4.5.0
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 toAttributeValueCollection
to improve the semantics forIsDirty
tracking and to better account for deleted attributes (1e4812f) - Added
FindAll()
(4dbf872),FindFirstParent()
(aa54ccf), andGetContentTypeDescriptor()
(026e7a3) extension methods forTopic
(7d08ac6) - Added
GetDouble()
(148a1b1) andSetDouble()
(23f9ce2) extension methods toAttributeValueCollection
(9795dd1) - Added
GetChildTopicIDs()
(8e0eca5) andFindTopicIDs()
(1dfd333) functions in order to facilitate tree traversal and lookups in SQL - Added
GetUniqueKey()
(a2ac659),GetTopicIDByUniqueKey()
(ea97f91), andGetExtendedAttribute()
(28a4694) functions, as well as aUniqueKeyIndex
view (b09ca5d) to the SQL database schema (1e9b1d5) - Added and implemented (68492d2) the
AddOrReplace()
(cd92791) andTryAdd()
(027ae25) methods to theStaticTypeLookupService
to simplify inheritance (6687431) - Significant updates to
GenerateNestedSet
to support transactions and topic ordering, while eliminating the need forTopics.RangeRight
to allowNULL
(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 asIsDirty()
(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 viaSqlTopicRepository.Save()
to avoid time mismatches between computers (d85743d) - Updated
RelatedTopicCollection.RemoveTopic()
to remove reciprocalIncomingRelationships
in order to avoid stale content or orphaned references (4514244) - Improved validation for
TopicRepositoryBase.Delete()
(67b70ca), including checks forisRecursive
mismatches (29c904a) and orphanedDerivedTopic
s (58057e1), as well as handling of orphaned relationships (13e4fe9, 2550779)
Cleanup
- Cleanup of SQL objects (c997b0e), including moving
UniqueKeyIndex
(4a17205),LeftRightRange
(e565f0e), andHierarchy
(nowAdjacencyList
) to theUtilities
schema (17b98b4), and removal of legacySimpleIntListToTbl
andSplit
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()
'sisRecursive
parameter fromfalse
totrue
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.