REPL
The global scripting variable is db — your active DbContext instance.
Input
- Enter — next line (
…continuation) ;at end of line or alone on a line — run snippet- Shift+Enter — newline inside snippet
- Tab — completion
- ↑ / ↓ — history
Commands
| Command | Description |
|---|---|
:help | Command list |
:about | Version and session paths |
:tables | DbSets and row counts |
:describe <entity> | Entity property sheet |
:dbinfo | Provider, connection, server version |
:dblog | Toggle SQL logging (sql-only or verbose) |
:plan | EXPLAIN on last SQL |
:scan lite / :scan deep | Project LINQ scan |
:stats | Session evaluation statistics |
:export csv|json | Export last result |
:benchmark [N] | Run last snippet N times (default 5); min/avg/max/p95 |
:compare set | Set baseline for comparison |
:compare | Diff baseline vs last run, or multi-variant group after #[Compare] |
:compare clear | Clear baseline and compare group |
:chart compare|benchmark|breakdown | ASCII timing charts |
:reset | Clear script variables (db unchanged) |
:quit | Exit |
Script attributes
Instead of :compare or :benchmark, use attribute lines in a script. They work in the REPL, efvibe -e, and efvibe serve eval (including Studio Run all).
#[Compare("With tracking")]
db.Products.OrderBy(p => p.Name).Take(10).ToList();
#[Compare("No tracking")]
db.Products.AsNoTracking().OrderBy(p => p.Name).Take(10).ToList();
#[Benchmark(10)]
db.Products.AsNoTracking().Count();
See features.md for full syntax.
Session files
Under <workspace>/<ProjectName>/<DbContextName>/:
myefvibe-scan-lite.json/myefvibe-scan-deep.jsonmyefvibe-scan-dismissals.json/myefvibe-scan-notes.jsonmyefvibe-export-*.csv/json