IIncrementalGenerator exists for one reason: to run only when its inputs actually change. Most generators fail at exactly that, because somewhere in the pipeline a value is compared by reference and the cache silently misses. This is part 1 of a 4-part series on getting incrementalism right, and it starts where every broken generator starts: the equality contract, the ImmutableArray trap, and the EquatableArray that fixes it.
The EU AI Act deadline everyone feared got pushed to December 2027, but nobody told you the
transparency rules still land in weeks. Here is what actually changed, what still hits your
chatbot in August, and the C# you need to prove it when someone asks.
ExcludeFromMigrations() keeps plugin entities fully queryable in the host DbContext while stripping migration ownership of their tables. Combined with per-context migration history tables, IDesignTimeDbContextFactory, and an explicit application-layer data access pattern, it enables truly independent plugin schema evolution.
EF Core’s entity discovery is thorough by design. In a plugin architecture, that thoroughness becomes a liability: navigation properties pull plugin entities into the host migration, creating shared schema ownership that breaks plugin isolation, causes schema drift, and makes clean plugin uninstalls impossible.
MCP is JSON-RPC with conventions, not magic. This guide builds a Model Context Protocol server in .NET with the official SDK: stdio and Streamable HTTP transports, tightly-scoped typed tools, JWT authentication, prompt-injection defenses, OpenTelemetry tracing, and the production failure modes the demos never mention.