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


Quino v3.0: Metadata builders and code-generation 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> <b>Metadata builders</b> are more lightweight now and have fewer restrictions on their API. (<a href="">QNO-4994</a>) Improve support for <b>plugins</b> (<a href="">QNO-5189</a>, <a href="">QNO-5190</a>, <a href="">QNO-5196</a>) Improve and clean up <b>expression</b> library (<a href="">QNO-5174</a>, <a href="">QNO-5176</a>, <a href="">QNO-5182</a>, <a href="">QNO-5183</a>, <a href="">QNO-5184</a>, <a href="">QNO-5188</a>, <a href="">QNO-5198</a>, <a href="">QNO-5205</a>) Improve <b>schema-migration tools</b> (<a href="">QNO-5179</a>, <a href="">QNO-5206</a>, <a href="">QNO-5212</a>, <a href="">QNO-5213</a>) </ul> <h>Breaking changes</h> <ul> <c>IDataSession</c> and <c>IApplication</c> now directly implement the <c>IServiceRequestHandler</c> and helper methods that used to extend <c>IApplication</c> now extend this interface instead, so calls like <c>GetModel()</c> can now be executed against an <c>IApplication</c> or an <c>IDataSession</c>. Many methods have been moved out of the <c>IServiceRequestHandler</c> interface to extension methods declared in the <c>Encodo.IOC</c> namespace. This move will require applications to update the <c>usings</c>. ReSharper will automatically find the correct namespace and apply it for you. Similarly, the extension method <c>ApplicationExtensions.GetInstance()</c> has been replaced with a direct implementation of the <c>IServiceRequestHandler</c> by <c>IApplication</c>. <c>MetaBuilder.Include()</c> has been replaced with <c>Dependencies.Include()</c> When you call the new version of <c>CreateModel()</c>, you can no longer call <c>CreateMainModule()</c> because the main module is set up automatically. Although the call is marked as obsolete, it can only be combined with the older overload of the <c>CreateModel()</c>. Using it with the newer overload will cause a runtime error as the main module is added to the model twice. <div>The various methods to create paths with the <c>MetaBuilder</c> have been replaced by <c>AddPath()</c>. To rewrite a path, use the following style: <code> Builder.AddPath( Elements.Classes.A.FromOne("Id"), Elements.Classes.B.ToMany("FileId"), path => path.SetMetaId(new Guid("...")).SetDeleteRule(MetaPathRule.Cascade), idx => idx.SetMetaId(new Guid("...")) ); </code> </div></ul>