2 3 4 5 6 7 8 9 10 11 12
v1.6.2.2: Performance, search and default skin

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • Performance improvements
  • Fixed some bugs in display of the search window
  • Set an explicit default skin ("Office 2010 Silver")

Breaking changes

No known breaking changes

v1.6.2.1: Hotfixes (Performance, Reporting, Treeview)

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

Breaking changes

No known breaking changes

v1.6.2.0: New reporting system and UI

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • A new reporting system and UI (based on the DevExpress Winforms UI)

Breaking changes

No known breaking changes

v1.6.1.0: Introduced support for interdependent modules

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • General performance improvements
  • GenericObject performance improvements
  • QNO-2926: Added HSV support for managing skinned colors
  • QNO-2894: Added a MAPIIncidentSubmitter to the Encodo library

Breaking changes

No known breaking changes

v1.6.0.0: Added support for Mongo/NoSQL databases

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • Mongo/NoSql database support
  • Portable deployment format
  • Translation fixes
  • Improved dependency decoupling (parsers)
  • QNO-2654, QNO-2652, QNO-2653, QNO-2655: MetaEditPanel: Add more layouting options, dynamic visibilty for layout groups, dynamic ReadOnly property control, allow to use rich text control
  • Many bug fixes

Breaking changes

No known breaking changes

v1.5.0.0: Upgraded to .NET 4.0 and VS2010

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • Improved support for transient data
  • Added Object graph/walker support
  • Moved to .NET 4.0/VS 2010

Breaking changes

No known breaking changes

v1.4.0.0: Added metadata-based support for history and publication

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

  • QNO-44: Add object clipboard to user interface
  • QNO-975: Add standardized support for history & publication
  • QNO-2316: Add IAuthenticationManager to the IApplicationToolkit for validating users
  • QNO-2313: Add support for customizing the schema migration using metadata aspects

Breaking changes

No known breaking changes

v1.3.0.0: Improved support for ASP.Net MVC

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

New Features

Highlights

Breaking changes

QNO-2143: Move IMetaAware/IMetaReader/IMetaWriter to persistence namespace

Simply update the using section to reflect the changed namespace.QNO-1078: Map MetaType.Time to DateTime instead of Timespan

When generated classes are re-generated with the 1.1.3.0 release, metadata with type "Time" will have an incompatible type with previous code. Simply update the references to use the "TimeOfDay" property of the generated data instead.QNO-1983: Eliminate IDataItem

Use the API on the IDataConnection to retrieve, save and delete single objects instead.

v1.2.0.0: MetaEditPanel and remoting improvements

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

New Features

  • QNO-1793: Add support for sticky connection to ensure objects stay in same transaction
  • QNO-1070: Add capability to save entire object-trees
  • QNO-1858: Restructure generic API for list and object access on IMetaReadable & IMetaWritable
  • QNO-1908: Create HTML based data preview control
  • QNO-1910: MetaEditPanel: Implement new layouting features

Highlights

  • QNO-1817: Add "OrderByDescending" to IQueryCondition to match the Linq API
  • QNO-1739: Remoting should return the correct type for database exceptions
  • QNO-1331: Clean up the startup form handling (can we get rid of the background, hidden window?)
  • QNO-1871: Add support for nested transactions to PostgreSql and SQL Server
  • QNO-1905: MetaTreeView: Respect relation target class in nodes
  • QNO-1872: Upgrade to latest nUnit
  • QNO-1950: Constants are generated with a reference to the model, but no "using"
  • QNO-1501: Exchange items are synchronized, but do not appear in the Outlook client

Breaking changes

QNO-1817: Remove "Prepare*" methods from the generated class API

Applications should instead use the new IDataList.Clone() method, like this:

var list = scheduledLesson.PrepareScheduledTeachers(connection);

// becomes...

var list = scheduledLesson.ScheduledTeachers.Clone(DataListParts.Dedicated);
```[QNO-1842](https://secure.encodo.ch/jira/browse/QNO-1842): Rename "ClearCache" and "ClearCaches" to "Unload" and "UnloadAll"

These methods were not used very often and have been removed rather than made obsolete.[QNO-1787](https://secure.encodo.ch/jira/browse/QNO-1787): Rename IDataConnection.LoadObject() to GetObject()

These methods were not used very often and have been removed rather than made obsolete.[QNO-1787](https://secure.encodo.ch/jira/browse/QNO-1787): Refactoring: IDataList methods (change *Objects; remove *InQuery)

Customer code did not contain many references to these methods yet, so they were simply renamed rather than copied and made obsolete.[QNO-1888](https://secure.encodo.ch/jira/browse/QNO-1888): Rename "RollbackTransaction" to "RollBackTransaction"

Customer code did not contain any references to this method yet, so it was simply renamed rather than copied and made obsolete.[QNO-1941](https://secure.encodo.ch/jira/browse/QNO-1941): Rename IViewPropertyControlAspect to IViewControlIdentifierAspect

Customer code did not contain any references to this interface yet, so it was simply renamed rather than copied and made obsolete.[QNO-1968](https://secure.encodo.ch/jira/browse/QNO-1968): Renamed IViewPropertyControlAspect to IViewControlIdentifierAspect

Customer code did not contain any references to this interface yet, so it was simply renamed rather than copied and made obsolete.[QNO-1883](https://secure.encodo.ch/jira/browse/QNO-1883): Rename "IDatabase.ConnectionSettings" to "IDatabase.DefaultConnectionSettings"

Customer code did not contain any references to this interface yet, so it was simply renamed rather than copied and made obsolete.[QNO-1885](https://secure.encodo.ch/jira/browse/QNO-1885): Change generated constructor to use IDataConnection instead of IPersistableMarker

In order to accommodate this change in the generated code, applications must do the following:


     1. Upgrade to Quino 1.2.0.0
     2. Manually update generated code in the following ways:

Change all constructors like this:

GeneratedClass(IPersistentClassMarker marker, IMetaClass metaClass)
base(marker, metaClass, false)

// Change to the following

GeneratedClass(IDataConnection connection, IMetaClass metaClass)

base(connection, metaClass, false)

v1.1.0.0: Add multilanguage support and remoting architecture

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

New Features

  • QNO-1627: Added support for object graphs
  • QNO-1570: Added support for multiple application and data languages
  • QNO-1564: Added support for querying data from an application server instead of directly from a database (remote queries)
  • QNO-1572: Added support for modeled remote methods
  • QNO-1562: Enumerated types can be extended with user values
  • QNO-1563: The metadata can now contain lists of typed constants (resources)

Highlights

  • QNO-1609: added initial support for the ASP.NET MVC library
  • QNO-1610, QNO-1461, QNO-1151, QNO-1601, QNO-1602, QNO-1603: improved toolkit configuration to prevent common errors; consolidate startup for standalone applications
  • QNO-1555: Startup code now works with any kind of Winforms form, instead of just MainFormBase
  • QNO-1611: improved import support for SQL Server (added smalldatetime and tinyint)
  • QNO-1641, QNO-1640, QNO-1639: Reduced size of models; reduced and adjusted API-footprint
  • QNO-1642, QNO-1643: Improvements to console applications and command-line handling
  • QNO-1646, QNO-1647: Changes to IApplicationOptions, IApplicationToolkit and IApplicationContext
  • QNO-205, QNO-1744, QNO-1745: Huge improvements to building and saving object graphs
  • QNO-1505: New and improved API for retrieving data available on the IDataConnection; IDataItem and some methods of IDataList are now deprecated.
  • QNO-1657: Improved integration with Linq queries by accepting and returning IEnumerable<T> instead of IList<T> or IMetaList<T> wherever possible.

Breaking changes

QNO-1610: startup configuration

The Encodo.Quino.App.ConfigurableApplicationToolkit.Model property is no longer writable and the constructor no longer accepts a parameter of type IMetaModel. To address the compile error for an application using a model called MyModel, do one of the following:

If you assigned the propery directly:

 1. Remove the assignment to `Model = MyModel.Instance`.
 2. Add `ModelLoader = new ModelLoader(MyModel.Instance);`

If you used the constructor parameter:

 1. Change the parameter from `MyModel.Instance` to `new ModelLoader(MyModel.Instance)`

Now you should be able to compile again.

 1. Run the code generator to update the generated code for your model.
 2. 1. Replace the reference to `new ModelLoader(MyModel.Instance)` with `MyModel.Loader`.[QNO-1617](https://secure.encodo.ch/jira/browse/QNO-1617): field made private

Any references to Encodo.Quino.Winform.DX.MainForm._workplaceControl should be replaced with Encodo.Quino.Winform.DX.MainForm.WorkplaceControlQNO-1639: Metadata changes IMetaBase no longer has the "MetaId", "LogicalParent", "BasedOn" and "Root" properties; instead these properties have been moved to the sub-interfaces from which they were actually needed.

Though these changes should cause no problem for applications, the new locations for these properties are as follows:

IMetaUnique.MetaId IMetaUnique.LogicalParent IMetaElement.BasedOn IMetaElement.RootQNO-1630: SortDirection moved to new namespace

The SortDirection enumeration has moved to the Encodo.Quino.Data namespace. References to Encodo.Quino.Meta.SortDirection should be updated to use the new namespace (Alt+Enter if you have R#).QNO-1643: Console and command-line changes

The ConsoleApplicationController.Start and ConsoleApplicationController.Shutdown methods are no longer available; instead, use ConsoleApplicationController.Run, passing a method that accepts an IApplicationContext.

Here's the standard pattern from Quino 1.0.5 and earlier:

internal void Main()
{
  var controller = new ConsoleApplicationController();

  try
  {
    var toolkit = new MyToolkit() { ... };

    var application = controller.Start(toolkit, ...);

    if (controller.GetStatus(application) == ApplicationContextStatus.Ready)
    {
      // Execute application code
    }
  }
  finally
  {
    controller.Shutdown();
  }
}

The new pattern removes much of this boilerplate code:

internal void Main()
{
  new ConsoleApplicationController().Run(
    new MyToolkit() { ... },
    ProcessApplicationCode,
  );
}

internal void ProcessApplicationCode(IApplicationContext application)
{
  // Execute application code
}
```[QNO-1642](https://secure.encodo.ch/jira/browse/QNO-1642): Command-line handling

The class `CommandLineBasedApplicationOptions` no longer exists. Instead, to customize the command-line handling, use the new `IApplicationToolkit.CommandLineProcessor` property. Use the `ApplicationToolkit.CommandLineOptionNames` constants to access predefined command-line parameters and add application-specific ones.

See the `DemoApplicationToolkit` class in the "Demo" solution in the release for an example.[QNO-1646](https://secure.encodo.ch/jira/browse/QNO-1646): Merged `IApplicationOptions` and `IApplicationToolkit`

`Options` are no longer available on `IApplicationToolkit`; instead, change all references to `Options` to reference the toolkit directly. `IApplicationContext` also no longer has `Options`; instead, change all references to `Options` to reference the new property `IApplicationContext.Toolkit`.[QNO-1658](https://secure.encodo.ch/jira/browse/QNO-1658): ISearchableList and IMessageList have been removed

As mentioned in [QNO-1658](https://secure.encodo.ch/jira/browse/QNO-1658), these two interfaces no longer exist; code that uses them should use an IList instead and use the LINQ functions instead of the Find* methods previously available.

For example:

if (searchableList.FindFirst(item => item.Enabled) != null)


becomes:

if (list.Any(item => item.Enabled))


As mentioned in issue [QNO-1661](https://secure.encodo.ch/jira/browse/QNO-1661), replace all uses of `ConfigurableApplicationToolkit` with `ApplicationToolkit`.[QNO-1725](https://secure.encodo.ch/jira/browse/QNO-1725): CSV parser no longer has "ElementParsed" and "RowParsed" events

Instead of attaching to the event, then parsing the text afterwards, applications must now pass all handlers to the `Parse` method as lambda functions:

var parser = new CSVParser(); var cells = new List(); parser.Parse(inputText, element => cells.Add(element.Data));


For such simple tasks as the one outlined above, there is now also a `CSVTools` class with some useful static methods:

var elements = CsvTools.GetElements(inputText); var lines = CsvTools.GetLines(inputText);


Many of the methods on the `MetaTools` static class have been moved to `MetaClassTools`, `MetaModelTools`, `MetaTypeTools`, `MetaPropertyTools` and `MetaExpressionTools`. Many of these methods have also been converted to extension methods so that they appear automatically in the code-completion for the appropriate types.[QNO-1716](https://secure.encodo.ch/jira/browse/QNO-1716): Changes to expression parsing

On top of that, there is no longer a static `IExpressionParser` available; instead, use the `MetaExpressionTools.Parse(...)` family of methods. This was done to ensure that access to expression parsing is centralized so that expression syntax and semantic errors are handled properly.[QNO-1700](https://secure.encodo.ch/jira/browse/QNO-1700), [QNO-1684](https://secure.encodo.ch/jira/browse/QNO-1684): ADO connections and commands no longer available by default

Applications can no longer get ADO objects from the `IDatabase`. Instead, there is an `IAdoDatabase` for non-Quino access and an `IMetaAdoDatabase` for Quino-based access. This was done to ensure that applications no longer make assumptions that there is a database available so that a transition to a remoting implementation is seamless.[QNO-1657](https://secure.encodo.ch/jira/browse/QNO-1657): `IList<T>` or `IMetaList<T>` replaced with `IEnumerable<T>` for many parameters and results

These were changed to improve integration with values returned by the Linq extension methods and to allow a more functional way of working with C# where data is retrieved only when it is actually used. This allows many calls to `ToList()` to be removed, although those calls should continue to work as well. However, methods that return an `IList` may need to be updated to either change the return type of the method (returning an `IEnumerable` instead) or by calling `ToList()`.[QNO-1571](https://secure.encodo.ch/jira/browse/QNO-1571): Added `IMetaLanguage` parameter to caption-retrieval functions

With the addition of multi-language support, it is no longer valid to simply retrieve a caption or text without indicating the language in which it should be retrieved. Many of the `ControlToolsDX` methods have changed to include an `IMetaLanguage` parameter. Applications should pass in the value of the `DisplayLanguage` property on the `IDataConnection` to use the default value.

ControlToolsDX.SetupLookupFromRelation(Properties, MetaRelation, connection.DisplayLanguage);