Is my SQL schema uploaded anywhere?
No. The CREATE TABLE statements are tokenized and parsed in your browser, and the C# is generated there too. Nothing is sent to a server, and no database connection is made — the tool only reads the text you paste.
How is this different from dotnet ef dbcontext scaffold?
Scaffolding connects to a live database and generates every table plus a DbContext. This tool works from a script, so it is useful when you only have DDL (a migration file, a pull request, a schema from documentation), when you want one or two tables rather than the whole database, or when you can't reach the server from your machine.
Which SQL dialects and types are supported?
SQL Server (T-SQL), PostgreSQL, MySQL/MariaDB and SQLite, auto-detected from the script with a manual override. Types map to the CLR types EF Core providers use — for example nvarchar(256) becomes string with [MaxLength(256)], datetimeoffset and timestamptz become DateTimeOffset, uniqueidentifier and uuid become Guid, rowversion becomes byte[] with [Timestamp], and MySQL tinyint(1) becomes bool. Unknown types become object with a warning.
What happens with composite primary keys or tables without a key?
A composite key is emitted as [PrimaryKey(nameof(A), nameof(B))] on the class, which needs EF Core 7 or later; a comment shows the HasKey Fluent API alternative for older versions. A table with no primary key gets [Keyless] and a warning, because EF Core can read but not track or update keyless entities.
Does it read SSMS "Script Table as CREATE" output?
Yes. Bracketed names and types ([dbo].[Users], [nvarchar](256)), GO separators, CONSTRAINT … DEFAULT clauses, PERSISTED computed columns, ON [PRIMARY], and the ALTER TABLE … ADD CONSTRAINT FOREIGN KEY and ADD DEFAULT … FOR statements that SSMS writes separately are all understood. pg_dump's ALTER TABLE ONLY … ADD CONSTRAINT and SET DEFAULT nextval(…) are handled too.
Why are defaults written as comments instead of C# initializers?
Database defaults like GETDATE(), now() or NEWID() run in the database at insert time. Translating them into C# initializers would change when and where the value is created, so the SQL default is kept as a comment. In Fluent API mode the comment reminds you where HasDefaultValueSql belongs if EF should know about it.