De schoonste manier om een ​​uitgeschakeld invoerveld via DB te vullen

Ik heb een formulier gemaakt waarmee de gebruiker kan toevoegen aan een voorraad items die zijn opgeslagen in een database. Elk item in de tabel Voorraad is gekoppeld aan een UID die automatisch wordt verhoogd, niet-bewerkbaar en effectief automatisch wordt gegenereerd.

Het bovenste veld in het formulier is ItemID, waarvoor de invoer is uitgeschakeld en die er alleen is om de gebruiker te informeren over het ID van het nieuwe item dat ze gaan toevoegen.

Idealiter is hier de pseudo-code:

<input type="text" name="email" value="<% (SELECT Max(ItemID) FROM dbo.Inventory).ToInt32 + 1 %>" disabled="disabled"/>

Ik heb al een ORG-configuratie van Linq naar SQL ingesteld. Dit wordt allemaal gedaan in MVC, dus het idee kwam bij me op om de juiste waarde in de controller van het formulier te achterhalen en deze vervolgens direct door te geven aan de weergave.

Wat zou de schoonste, eenvoudigste manier zijn om dit te bereiken? Ik denk dat het veld "waarde" idealiter niet meer dan 1 regel mag zijn.

1

1 antwoord

Deze aanpak zal niet werken.

Als ItemID automatisch verhogend veld is, welke componenten worden dan waardevoller? Overal maar de database waar je problemen tegenkomt. Ervan uitgaande dat u een veld gebruikt dat is toegewezen aan een database en u uw invoerveld invult met een waarde, neemt u de volgende beschikbare waarde op dat moment . Wat gebeurt er als twee formulieren worden gelezen en onzorgvuldig worden ingediend? De id die u in uw waardeveld invult, komt niet overeen met de id die de database toewijst. Dit zou dus mogelijk alleen voor één gebruiker tegelijk kunnen werken.

Het beste is om de DB de waarde toe te wijzen wanneer u de eigenlijke DB-invoeging uitvoert met behulp van een identiteitskolom en u niet hoeft te zorgen dat u dit handmatig doet of zelfs probeert om de id te voorspellen - voer het waardeveld niet op deze manier in.

0
toegevoegd