What's new in Intent Architect (May 2023)
Welcome to the May 2023 edition of highlights of What's New in Intent Architect.
Product updates
Module updates (C#)
IReadOnlyCollectionsupport for "private setter" Domain Entities - Make entity collections immutable except from within the same class.- Stored Procedure support for EF Core - It's now possible to have methods generated on repositories for using stored procedures.
- Designer comments as XML documentation comments -
ServiceandDomaindesigner element comments are being included in relevantXML document comments. - Parameter default value support for Domain and Service Designers - It is now possible to specify default values for Parameters that are found on Service operations, Domain Class operations (and constructors) and Domain Service operations.
- GraphQL module for C#(using HotChocolate) - GraphQL support for your applications, all.
- Support for DTO return types on CRUD operations - the ability to return mapped DTOs on generated CRUD operations.
- Better Association visualization in Domain Designer tree view - Domain Designer now visualizes cardinality in the tree view.
Pre-released Module updates (C#)
asyncandCancellationTokensupport in more places - Domain operations, domain services and normal services now now supportasyncandCancellationTokens.- OpenAPI support for Azure Functions - Provides
OpenAPIsupport forAzure Functionsapplications. - GraphQL support for Azure Functions - Provides
GraphQLsupport forAzure Functionsapplications, throughHot Chocolate. - Support for EF Core 7 JSON Columns - It is now possible to leverage JSON Columns support which was introduced in Entity Framework Core 7.
- Azure Key Vault support added for ASP.NET Core - Secrets that are stored in Azure Key Vault can now be queried from the
IConfigurationservice inside your app.
Product updates
Intent Architect 4.0.0 is live
Intent Architect v4 is now live and available for download. V4 introduces tabs, a solution explorer and many other improvements, click here for the full release notes.
Module updates (C#)
IReadOnlyCollection support for "private setter" Domain Entities
It was already possible to enable Private Setters for domain entities, but collection properties were previously exposed as mutable ICollection<T>s. Now enabling Private Setters will change ICollection<T> properties to instead be IReadOnlyCollection<T> properties with a backing private field of type List<T>.
This is to help developers adhere to the DDD principle that mutation of properties of domain entities should be impossible except through methods on the entity which ensures that business rules and consistency is maintained.
(Final version expected to be released 2023-06-05, pre-release available today by checking "Include prerelease" in the Modules screen.)
Available from:
- Intent.Entities 4.3.0
Stored Procedure support for EF Core
It's now possible to have methods generated on repositories for using stored procedures:
- Create a
Repositoryin the Domain Designer (either in the package root or a folder). - You can optionally set the "type" of the repository to a
Classwhich will extend the existing repository which is already generated for it, otherwise if no "type" is specified a new Repository is generated. - On a repository you can create
Stored Procedures. - At this time, the module supports a Stored Procedure returning: nothing, an existing
Classor aData Contract(Domain Object). - The Software Factory will generate methods on the Repositories for calling the Stored Procedures.
Available from:
- Intent.EntityFrameworkCore.Repositories 4.2.2
Designer comments as XML documentation comments
Most designer elements support a comments field, if these comments are captured, these comments are included in the relevant generated code as XML document comments.
Available from:
- Intent.Application.Contracts 5.0.0
- Intent.Application.Dtos 4.0.3
- Intent.Application.MediatR 4.0.6
- Intent.Application.ServiceImplementations 4.2.0
- Intent.DomainEvents 4.0.4
- Intent.DomainServices 1.1.0
- Intent.Entities 4.3.0
- Intent.EntityFrameworkCore.Interop.DomainEvents 4.0.3
Parameter default value support for Domain and Service Designers
It is now possible to specify default values for Parameters that are found on Service operations, Domain Class operations (and constructors) and Domain Service operations.
Available from:
- Intent.Application.ServiceImplementations 4.2.0
- Intent.AspNetCore.Controllers 5.1.0
- Intent.DomainServices 1.1.0
- Intent.Entities 4.3.0
GraphQL module for C#
This module supports exposing a GraphQL interface into your application.
This module brings designer support for exposing modelled services as GraphQL through the GraphQL Enabled stereotype, as well as a new GraphQL designer extensions for more advanced scenarios.
This module is implemented using HotChocolate.
Available from:
- Intent.HotChocolate.GraphQL 4.0.0
Support for DTO return types on CRUD operations
The ability to return mapped DTOs on generated CRUD operations.
For example, if you have a CreateCustomer Command or Service Operation it can not be modelled to return a CustomerDTO as opposed the current CRUD implementations which returned the primary key.
Available from:
- Intent.Application.MediatR.CRUD 5.0.2
- Intent.Application.ServiceImplementations.Conventions.CRUD 4.2.3
Better Association visualization in Domain Designer tree view
The Domain Designer better visualized associations in the Treeview, showing information about cardinality. Associations are now visualized with syntax which will look like * --> 1
Available from:
- Intent.Modelers.Domain 3.4.1
Pre-released Module updates (C#)
Pre-released modules are typically stable, but are subject to breaking changes before final release. Typically we perform final releases approximately every two weeks provided no issues found with the pre-release.
async and CancellationToken support in more places
- Application services (as modelled in the
Servicesdesigner) now have aCancellationToken cancellationToken = defaultparameter and which is also populated as an argument when dispatched to from controllers. - Appending
Asyncto an operation on class or domain service will now also make the method asynchronous and have aCancellationToken cancellationToken = defaultparameter added.
Available from:
- Intent.Application.Contracts 5.0.1 (pre)
- Intent.Application.ServiceImplementations 4.2.1 (pre)
- Intent.AspNetCore.Controllers.Dispatch.ServiceContract 5.1.1 (pre)
- Intent.Entities 4.3.1 (pre)
OpenAPI support for Azure Functions
This module brings in OpenAPI support for your Azure Function application.
Available from:
- Intent.AzureFunction.OpenApi 1.0.0 (pre)
GraphQL support for Azure Functions
This module brings in GraphQL support for your Azure Function application, allowing you to expose your Azure Functions through a GraphQL api. This module uses Hot Chocolate as it's GraphQL engine.
- In the
Servicedesigner simply apply theGraphQL Enabledstereotype to theService Operations you wish to expose throughGraphQL
Available from:
- Intent.HotChocolate.GraphQL.AzureFunctions 1.0.0 (pre)
Support for EF Core 7 JSON Columns
It is now possible to leverage JSON Columns support which was introduced in Entity Framework Core 7. Adding a Serialization Settings stereotype on Value Objects in the Domain designer will cause Value Objects and their associated entities to be stored in a JSON serialized format in a single database column.
Available from:
- Intent.EntityFrameworkCore 4.4.0 (pre)
- Intent.ValueObjects 4.1.0 (pre)
Azure Key Vault support added for ASP.NET Core
Secrets that are stored in Azure Key Vault can now be queried from the IConfiguration service inside your app. It is also configurable so that secrets may only be accessed from particular environments, using specified credentials or automated discovery.
Available from:
- Intent.Azure.KeyVault 1.0.0 (pre)
- Intent.AspNetCore 5.0.0 (pre)