It is a simple command line tool that can be installed from NuGet. When run, it will take a C# database migration context assembly, and create an entity relationship (ER) diagram in Mermaid syntax.
You can install the siren-gen tool via the following .NET command
dotnet tool install -g Gman.Siren
Run the command as follows:
siren-gen
-a [--assemblyPath] <PATH_TO_MIGRATION_ASSEMBLY>
-c [--connectionString] <DATABASE_CONNECTION_STRING>
-o [--outputPath] <PATH_TO_OUTPUT_MARKDOWN_FILE>
-m [--markdownAnchor] <MARKDOWN_ANCHOR>
-f [--filterEntities] <ENTITIES_TO_INCLUDE>
-s [--skipEntities] <ENTITIES_TO_OMIT>
-h [--filterSchemas] <SCHEMAS_TO_INCLUDE>
-x [--skipSchemas] <SCHEMAS_TO_SKIP>
PATH_TO_MIGRATION_ASSEMBLY(optional, required if connection string not provided) - this will be the location of the built .NET DLL containing the database migration you wish to map to an ER diagram.DATABASE_CONNECTION_STRING(optional, required if assembly not provided) - this can be set to the connection string of a (currently online), accessible database. Siren uses the SchemaSearch library to run compatible system information schema queries using Entity Framework; this is another potential rendering option in the absence of a migration assembly.PATH_TO_OUTPUT_MARKDOWN_FILE(required) - this points to a file (on your local file system) where the markdown should be generated; includes the full file name. The file does not have to be a markdown (.md) file.MARKDOWN_ANCHOR(optional) - this is useful for updatingREADME.mdfiles that may be associated with your domain model (i.e. committed in a git repository). If the markdown anchor is specified, and the output file contains that markdown anchor (for example"### My Domain Model Diagram"), then the Siren tool will only add or replace any existing diagram it finds under that anchor, and leave the rest of the document unmodified.
ENTITIES_TO_INCLUDE(optional) - comma-separated list of entities to filter (by name).ENTITIES_TO_OMIT(optional) - comma-separated list of entities to omit (by name).SCHEMAS_TO_INCLUDE(optional) - comma-separated list of entities to filter (by schema).SCHEMAS_TO_OMIT(optional) - comma-separated list of entities to omit (by schema).