This page shows the source for this entry, with WebCore formatting language tags and attributes highlighted.


v2.2: Winform fixes and Query Improvements


The summary below describes major new features, items of note and breaking changes. The <a href="">full list of issues</a> is also available for those with access to the Encodo issue tracker. <h>Highlights</h> <ul> Lots of bug fixes and improvements for the <b>Winform UI</b> and <b>German translations</b> with the release of Punchclock on this version. (<a href="">QNO-5162</a>, <a href="">QNO-5159</a>, <a href="">QNO-5158</a>, <a href="">QNO-5157</a>, <a href="">QNO-5156</a>, <a href="">QNO-5140</a>, <a href="">QNO-5155</a>, <a href="">QNO-5145</a>, <a href="">QNO-5111</a>, <a href="">QNO-5107</a>, <a href="">QNO-5106</a>, <a href="">QNO-5104</a>, <a href="">QNO-5015</a>) <c>DateTimeExtensions.GetDayOfWeek()</c> had a <b>leap-day bug</b> (<a href="">QNO-5051</a>) Fixed how the <b>hash code</b> for <c>GenericObjects</c> is calculated, which fixes sorting issues in grids, specifically for non-persisted or transient objects (<a href="">QNO-5137</a>) Improvements to the <b><c>IAccessControl</c> API</b> for getting groups and users and testing membership (<a href="">QNO-5133</a>) <div>Add support for <b>query aliases</b> (e.g. for joining the same table multiple times) (<a href="">QNO-531</a>) This changes the API surface only minimally. Applications can pass an <c>alias</c> when calling the <c>Join</c> method, as shown below, <code>query.Join(Metadata.Project.Deputy, alias: "deputy")</code> You can find more examples of aliased queries in the <c>TestAliasedQuery()</c>, <c>TestJoinAliasedTables()</c>, <c>TestJoinChildTwice()</c> defined in the <c>QueryTests</c> testing fixture.</div> Add a standalone <c>IQueryAnalyzer</c> for optimizations and in-memory mini-drivers (<a href="">QNO-4830</a>) </ul> <h>Breaking changes</h> <ul> <c>ISchemaManager</c> has been removed. Instead, you should retrieve the interface you were looking for from the IOC. The possible interfaces you might need are <c>IImportHandler</c>, <c>IMappingBuilder</c>, <c>IPlanBuilder</c> or <c>ISchemaCommandFactory</c>. <c>ISchemaManagerSettings.GetAuthorized()</c> has been moved to <c>ISchemaManagerAuthorizer</c>. The hash-code fix for <c>GenericObjects</c> may have an effect on the way your application sorts objects. <div>The <c>IParticipantManager</c> (base interface of <c>IAccessControl</c>) no longer has a single method called <c>GetGroups(IParticipant)</c>. This method was previously used to get the groups to which a user belongs <i>and</i> the child groups of a given group. This confusing double duty for the API led to an incorrect implementation for <i>both</i> usages. Instead, there are now two methods: <ul> <c>IEnumerable<igroup> GetGroups(IUser user)</c>: Gets the groups for the given user <c>IEnumerable<igroup> GetChildGroups(IGroup group)</c>: Gets the child groups for the given group </ul> The old method has been removed from the interface because (A) it never worked correctly anyway and (B) it conflicts with the new API.</div> </ul>