Sto sviluppando un'applicazione di registrazione/fatturazione di hotel in ASP.Net, utilizzando il framework entità. Quando si tratta di generare il conto per il dichiarante, il mio cliente ha molti criteri stravaganti. Invece di un sistema di fatturazione per letto per notte (piuttosto standard ...), al cliente potrebbe essere addebitato un importo diverso in base alla loro età, alle date specifiche che stanno visitando, al tipo di camera (letto matrimoniale, letto singolo, ecc.) O al conferenza che stanno frequentando, o tutti e quattro ...Design del sistema di fatturazione robusto. Sto andando completamente nella direzione sbagliata?
Ecco il mio schema:
Essendo un relativamente giovane programmatore, mi sento come se mi manca qualcosa, da qualche parte lungo la tabella "Regola". Quello che sto cercando di fare è consentire a un amministratore di creare qualsiasi numero di ConditionalStatements ("Età> 5" o "Età < 10" dove "Età" è l'Statement.Value, ">" è il Condition.Value e '5' è il ConditionalStatement.Value) e collega qualsiasi numero di essi insieme, creando così una "Regola". L'amministratore quindi assocerebbe la regola a varie RateSchedule e l'applicazione avrebbe quindi la possibilità di generare una fattura per qualsiasi cliente che si è registrato per un soggiorno ..
Mi sento come se fossi sulla buona strada, e che la maggior parte di questa soluzione funzionerà in tutti i modi in cui ne ho bisogno, ma qualcosa non sembra giusto. Ho due domande relative alla creazione della "Regola" ..
Cosa sto facendo male, per quanto riguarda il design "Regola"? Sembra che non sia in grado di generare un nuovo RuleSet.ID ogni volta che l'amministratore vuole creare una nuova regola. È qualcosa che dovrei fare a livello di programmazione ? Devo completamente ripensare completamente a questa procedura?
Da una prospettiva Entity Framework/scaffolding, qual è il modo migliore per aggiungere nuove regole al db? Lo scaffolding predefinito mi consente di inserire una riga alla volta, ma per creare effettivamente una regola, avrei bisogno di associare un RuleSet.ID con più ConditionalStatement.IDs - ma non riesco a capire un modo per farlo intuitivamente con EF ponteggi ..
Tutti i puntatori nella giusta direzione sono molto apprezzati! Grazie :)
EDIT: Finii per ridisegnare sulla base delle risposte alla mia domanda, ma durante la ricerca imbattuto motore di regole business di Microsoft: http://msdn.microsoft.com/en-us/library/aa561216.aspx e anche un matematico espressione valutatore: http://ncalc.codeplex.com/ Solo nel caso chiunque altro trova questa domanda in futuro e questi collegamenti possono aiutare. Grazie per tutto l'aiuto ragazzi!
La definizione di un DSL/AST tramite tabelle in SQL mi dà sempre un forte caso di jeebee heebie ... –
È possibile utilizzare lo scaffolding EF per creare un insieme complesso di voci senza impostare chiavi esterne. Utilizza invece le proprietà di navigazione. Aggiungi oggetti figlio alla raccolta delle proprietà di navigazione dell'oggetto genitore. Quando salvi le modifiche sul tuo DB Contesto tutte le chiavi esterne saranno risolte in modo auto-magico da EF. –