DotnetMinorNotes

Sql injection

Kan niet in stored procedures omdat deze al gecompileerd zijn. Inputs zijn data

Table soorten

Clustered table

Een table die een clustered index bevat. De data is fysiek op de schijf gesorteerd op basis van de clustered index

Heap table

Sql Server Pages

Een table die geen clustered index bevat. De data wordt via pages opgeslagen

Sql pages

Indexen

Indexen worden opgeslagen als een binary tree ++

Soorten index

Clustered index

Non-clustered index

Er wordt een tabel bijgehouden met daarin een kolom voor de non-clustered index key. Op deze kolom wordt er gesorteerd. Indien er ook een clustered index op de tabel zit, wordt voor iedere rij de bijbehorende clustered index key bijgehouden. Anders wordt hier een page bijgehouden van waar de rij zich bevindt

Covering index

Een index die over meerdere kolommen gaat

Filtered index

Een index met een Where statement

Bookmark lookup

Bookmark lookup

Stel je voor: We hebben een tabel personen met een non-clustered index op ‘Naam’ (links) en een clustered index op ‘Id’ (rechts). Zoeken we op ‘Jan’, zal de database in de non-clustered index gaan zoeken naar ‘Jan’. In de betreffende rij is te vinden dat ‘Jan’ het id ‘201’ heeft. Vervolgens zoekt de database via de clustered index de rest van de gegevens die bij persoon ‘201’ horen. Het gebruik van een non-clustered index in combinatie met een clustered index, zoals hierboven beschreven, noemen we een ‘Bookmark lookup’

Seek

Het zoeken naar een index noemen we een ‘seek’ operatie

Scan

Als de database rijen op een volgend leest, noemen we dit een scan. Dit kunnen alle rijen in de tabel zijn, vanaf een specifieke rij tot een specifieke andere rij, etc.

Entity framework mapping

[DataAnnotations]

FluentAPI

Mapping in een aparte file

modelBuilder.ApplyConfiguration(new PersonMapping())

PersonMapping implementeert IEntityTypeConfiguration<Person>. Hierdoor moet de public void Configure(EntityTypeBuilder<Person> builder) geimplementeerd worden