Něco velmi podobného jsem před časem řešil a to následovně: 1) Na volbu vložit příspěvek již v databázi vznikne nový záznam a načte se jeho ID (v db jako identity). Záznam musí mít pouze ID, datum zapsání a ID uživatele, který příspěvek tvoří, vše ostatní bude nepovinné a nevyplněné (záznam typu Draft). 2) Editace nového příspěvku již bude probíhat pro vytvořené nové ID (např. se provede redirect, aby toto ID bylo již v URL), při uploadu souboru se soubor uloží s vazbou na příspěvek. 3) Při dokončení editace příspěvku se záznam Draft updatuje na normální záznam příspěvku. Například lze na databázi pomoci CHECK ošetřit, že když se vyplní něco pro příspěvek povinného, tak už musí být vyplněné všechno. 4) Někdy/občas se musí provést odstranění (včetně uploadovaných příloh) např. jeden den starých Draft záznamů (podle data zápisu). Ty vzniknou pokud uživatel editaci nového příspěvku nedokončí a uteče z ní. Pokud by se vám nelíbilo, že skoro všechny pole musí být v db nepovinné, jde výše uvedené řešení modifikovat tak, že se nově generované ID bude držet v samostatné tabulce (obě tabulky budou k sobě 1:1). Také by případě šlo řešení dále rozšířil o to, že by se rozeditované Draft záznamy uživateli přímo zviditelníli tj. když z nějaké editace uživatel uteče, tak by jí mohl později najít a dokončit.
|