Documentation

Graphtia documentation · reference

.NET framework analysis: ASP.NET Core, DI, EF Core and gRPC

See how Explorer recognizes ASP.NET Core, Built-in .NET dependency injection, Entity Framework Core, gRPC .NET, which source relationships it exposes, and what remains outside static coverage.

These adapters add framework structure to the language index. The sections below separate detection, supported relationships, required source context and limits.

Explore an example: ASP.NET Core · Built-in .NET dependency injection · Entity Framework Core · gRPC for .NET

Official .NET-enabled Explorer builds include Graphtia’s Roslyn-backed C# analyzer. No separate analyzer installation is needed. Framework analysis uses the C# symbols and project/source context produced by that included analyzer.

ASP.NET Core

Connect supported controllers and Minimal API declarations to their handlers, with static groups, endpoint metadata and middleware registrations.

.NET web framework · Illustrative exampleASP.NET Core

What endpoint does this Minimal API group declare?

Evidence to inspect
  1. MapGroup /api to GET /api/ordersstatic prefix
  2. GET /api/orders to ListOrders handlerhandler binding
  3. GET /api/orders to Produces metadatadeclared response metadata

Inspect a literal group and route, its exact handler and source-declared response metadata before changing an API.

Dynamic routes, runtime model binding and effective authorization remain unverified. Endpoint metadata states what the source declares; it does not verify the response or access policy.

How it is recognized

Web SDK/package/namespace or WebApplication source evidence.

Relationships you can inspect

  • Controller attributes, verb/path alternatives and parameter roles.

  • MapGet/Post/Put/Delete/Patch/Methods, named/lambda handlers and nested literal MapGroup.

  • WithName/WithTags, authorization declarations, Produces/Accepts and lexical middleware registrations.

Required source context

  • Literal route data and exact accepted handler evidence.

Coverage limits

  • Authorization metadata is partial and does not prove access decisions.

  • Dynamic paths/transformers, convention-only discovery, runtime model binding and control-flow-dependent middleware remain unresolved.

Built-in .NET dependency injection

Inspect service registrations, lifetimes and constructor dependencies without running the container.

Built-in platform feature · Illustrative exampleBuilt-in .NET dependency injection

Does this constructor dependency have one supported static binding?

Evidence to inspect
  1. IClock constructor parameter to Static binding evidencedepends on
  2. Static binding evidence to Clock implementationunique binding
  3. AddSingleton registration to Static binding evidenceregistration evidence

Follow a constructor parameter through a uniquely matching registration. Multiple matching registrations remain unresolved rather than becoming a confirmed choice.

Factories, keyed services, replacements and disposal behavior remain partial or unevaluated. One matching registration supports the binding; the runtime container is not executed.

How it is recognized

Recognized DI package/using or IServiceCollection/builder.Services source evidence.

Relationships you can inspect

  • Singleton/scoped/transient, TryAdd/enumerable, hosted-service and open-generic declarations.

  • Supported keyed/options/factory/instance metadata; constructor dependencies bind only to a unique exact static registration.

Required source context

  • Exact registration and constructor/service identities.

Coverage limits

  • Factories, keyed services and options are partial.

  • Ambiguous registrations do not become many-to-many confirmed bindings; factory execution, replacement and disposal behavior are not inferred.

Illustrative exampleKeep a unique binding separate from ambiguity

A supported constructor dependency can bind to one recognizable registration. Several candidates remain unresolved.

One matching registration
Registration
builder.Services.AddSingleton<IClock, Clock>();

Constructor parameter: IClock clock

ClockUnique supported implementation
Two matching registrations
Registrations
services.AddScoped<IClock, FirstClock>();
services.AddScoped<IClock, SecondClock>();

Constructor parameter: IClock clock

UnresolvedCandidates: FirstClock, SecondClock

These are static relationships, not observed calls or a simulation of the running dependency-injection container.

Inspect these relationships through the existing graph and source evidence. A unique supported constructor binding can identify an implementation; several matching registrations remain unresolved candidates. There is no separate dependency-injection tab or simulation of the running container implied here.

Entity Framework Core

Explore explicit DbContext/DbSet and entity-model declarations, including supported annotations, Fluent API mappings and relationships.

ORM · Illustrative exampleEntity Framework Core

Which entity and relationship does this context declare?

Evidence to inspect
  1. Store DbContext to DbSet of Orderdeclared set
  2. DbSet of Order to Order entityentity type
  3. Order entity to Customer relationship targetmodel relationship
  4. Order entity to Declared orders mappingmapping metadata

Inspect explicit DbSet and model mappings, including supported relationships, while separating model structure from database behavior.

No LINQ-to-SQL execution, applied migration state, query plan or general ORM-to-DDL linking is established. These boxes describe the EF model; the mapping box is not proof of a deployed or indexed SQL table.

How it is recognized

Recognized Microsoft.EntityFrameworkCore project or namespace evidence.

Relationships you can inspect

  • Contexts, DbSet<T>, entity annotations, Fluent API, mappings, owned types and relationships.

  • Partial inheritance/migration declarations; raw-SQL API boundaries and converter registrations where explicitly visible.

Required source context

  • Entities need explicit EF evidence; unrelated C# classes remain ordinary language facts.

Coverage limits

  • Inheritance and migration coverage are partial; migrations are not executed.

  • No live schema, SQL translation/execution, applied migration state, provider behavior or query-plan proof; not general ORM-to-DDL reconciliation.

gRPC .NET

Inspect supported generated service/client declarations, registration and statically visible streaming shapes.

Generated-binding RPC stack · Illustrative examplegRPC for .NET
gRPC · .NET

Which generated service is registered and which method overrides its RPC?

Evidence to inspect
  1. Generated OrdersBase to OrdersService implementationgenerated base
  2. OrdersService implementation to GetOrder overrideRPC override
  3. MapGrpcService registration to OrdersService implementationregistration evidence

Review generated-base inheritance, accepted RPC overrides and explicit service registration.

Message schemas, runtime addresses, interceptors and observed streaming behavior are not proved. Registration supports the declared provider; an override alone is not a running service.

How it is recognized

Recognized gRPC project/namespace, MapGrpcService or GrpcChannel source evidence.

Relationships you can inspect

  • Generated *Base inheritance and RPC overrides; MapGrpcService<T> registration.

  • Generated client uses and AddGrpcClient<T> declarations.

  • Static unary/client-stream/server-stream/bidirectional signatures as declaration evidence.

Required source context

  • Generated binding source and exact service/RPC identity; registration is required to promote a provider.

Coverage limits

  • Standalone Proto parsing, message schemas and runtime calls are unavailable.

  • Runtime addresses, channels, interceptors and observed stream delivery are not proved.

How to interpret a result

Inspect the source location, revision and relationship kind. A recognized registration is static evidence; it does not establish runtime behavior or compatibility with every framework release. Unresolved or ambiguous targets should remain part of your review.

Graphtia

This page is on its way. Join the waitlist to hear what’s next for Graphtia.

Join waitlist