10.3 release notes¶
InfoCarrier.Core 10.3 makes deployment configuration easier to share, adds explicit support for
anonymous projection shapes, and improves failure diagnostics. It needs Entity Framework Core
10.0.1 or later. Upgrade the client and server together.
One deployment configuration¶
Client and server applications often need the same information about values crossing the wire. Version 10.3 lets both applications call one application-owned extension method:
public static InfoCarrierDeploymentBuilder ConfigureInfoCarrier(
this InfoCarrierDeploymentBuilder builder)
=> builder
.AddAnonymousShapes(new { Id = 0, CustomerId = (string?)null })
.AddAllowedTypes(typeof(SqlServerDbFunctionsExtensions))
.AddValueMappers(new MoneyValueMapper())
.AllowArbitrarySqlExecution(true);
Apply client-only settings before the shared method:
optionsBuilder.UseInfoCarrier(client, options => options
.UseNonRelationalServerStore()
.ConfigureInfoCarrier());
Use the same method on the server:
Applications using only the default conventions need no callback:
The new InfoCarrier.Core.Abstractions package contains the shared builder and value-mapper
contract. It has no Entity Framework Core dependency. An existing shared model project can use it,
or an application can keep deployment configuration in a separate shared project.
Existing version 10 configuration methods still work. Five methods planned for removal in version 11 now produce migration warnings. #223
Anonymous projections across the wire¶
Applications can register anonymous shapes used by queries on both sides. Matching declarations let the server's database provider translate the original projection when it supports that shape.
Applications without declarations keep the 10.2 planning behavior. A declaration on the client does not grant server permission. The server still rejects an undeclared shape before database execution. #210, #222
Clearer failures¶
Client logs now distinguish failures returned by the server from failures while processing a successful response. Server logs preserve the original operation failure when logging itself fails. The transport also reports failures at clearer boundaries. #217, #219
If a commit or rollback succeeds but its response is lost, the client now reports an uncertain outcome. It does not claim the transaction failed or succeeded. Query cancellation is also tested through a real network connection. #184, #189
More Entity Framework behavior preserved¶
More query shapes now follow the backing Entity Framework provider's result and SQL. Examples
include Single and SingleOrDefault after projections, Distinct
projection boundaries, inheritance unions, and ad hoc raw queries.
#195,
#207
Incoming type descriptions now have explicit complexity limits before runtime type resolution. This rejects excessively deep or large descriptions without weakening normal application type registration. #213
How it is verified¶
The suite includes in-memory, relational, document-store, and wire-free control scenarios. The limitations page lists the cases that intentionally differ from plain Entity Framework Core.
Feedback¶
If you encounter a bug, have a question, or would like to request a feature, open an issue.