By Razi Syed. Sample code: github.com/dotnetreport/dotnetreport-aspnetcore-quickstart
Most self-service reporting projects don't fail in the report designer. They fail the first time a user opens the field list and sees tbl_ord_hdr , IsDeleted , RowVersion , LegacyStatusCd2 and four hundred tables in alphabetical order. They pick the wrong Status column, join orders to the wrong customer key, get a number that's off by the soft-deleted rows, and from then on "the reports are wrong" β even though every query ran exactly as written.
The fix isn't a better UI. It's treating the schema you expose to report builders as a product surface: curated, named for humans, pre-joined where joins are hard, and with the dangerous parts simply absent. This article is the checklist I use, with the setup screen of Dotnet Report (which I work on β disclosure) as the concrete example.β¦