Skip to content

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:

builder.Services.AddInfoCarrier(options => options.ConfigureInfoCarrier());

Applications using only the default conventions need no callback:

optionsBuilder.UseInfoCarrier(client);
builder.Services.AddInfoCarrier();

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

Total tests: 30148, Failed: 0

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.