157 messaggi dal 08 marzo 2012
Ciao,

ho necessità in un'applicazione di gestire un'entity descritta in Json su un db relazionale.
Immaginate di avere un Json che descrive una persona e di doverne gestire il classico crud su database.

Ovviamente vorrei usare un ORM.

Qual è il mio problema? Ho il Json ma non una classe C# che che rappresenta il concetto di persona.
In sostanza a runtime, tramite un campo discriminante, posso sapere a quale tabella fa riferimento il json ma non ne ho una classe c#.
Non posso ovviamente creare una classe c# perché i jSon che ricevo non li conosco a priori.

Avete idea di come possa gestire tramite un ORM dei json sulle corrispondentu tabelle senza però averne la classe c# corrispondente?
I dynamic di C# possono venire in aiuto i questi casi secondo voi?

Grazie e buon Natale a tutti!
204 messaggi dal 22 gennaio 2017
Contributi
Ci sono vari modi per archiviare queste informazioni.
Dipende come devi gestirle. Se sono campi aggiuntivi in lettura, potredti utilizzare qualcosa di ibrido.
Ad esempio una tabella che contenga una colonna stringa in cui archiviare il JSON.
Lette le informazioni sulla colonna, vai a deserializzare l'oggetto.

Altrimenti potresti passare a database NoSql in cui archiviare solo JSON.
Modificato da andrea.tosato86 il 23 dicembre 2017 16.49 -
157 messaggi dal 08 marzo 2012
Il fatto è che ogni entità è parte di un modello di business ed è quindi relazionato ad altre entità.
Passando ad un NoSql perderei la gestione di queste relazioni, perchè ovviamente se poi un valore referenziato viene aggiornato dovrei propagarne la modifica su tutte le entità già archiviate.

Sbaglio? Mi chiedevo se con un ORM tipo Dapper sia fattibile.
204 messaggi dal 22 gennaio 2017
Contributi
La relazione tra entità la puoi esprimere anche tramite codice, quindi dovresti adeguare il tuo codice ai dati presenti sul DB. Dalla poca esperienza che ho su NoSQL, il problema non è affatto la lettura, ma la scrittura.



Con Dapper o altri ORM puoi utilizzare solo db relazionali e quindi potresti utilizzare il primo approccio che ti consigliavo (un campo stringa sul DB).
Utilizzerei Dapper per eseguire query direttamente sui dati.
Ad esempio, per sfruttare tutta la sintassi di lettura e manipolazione JSON https://docs.microsoft.com/it-it/sql/relational-databases/json/json-data-sql-server
Anche EF ha la possibilità di utilizzare del SQL e un mapping su oggetti.
157 messaggi dal 08 marzo 2012
La mia idea di massima è quella di utilizzare un db relazionale ma sto cercando di capire se posso usare un ORM per persistere e leggere i dati da Json (senza averne le corrispondenti classi C#) oppure se devo passare ad una gestione manuale dello strato di gestione del db.
204 messaggi dal 22 gennaio 2017
Contributi
Le classi corrispondenti le devi avere.
Puoi crearti i tipi tramite roslyn o crearti delle istanze tramite reflection.

Eventualmente puoi utilizzare dei dictionary, se non erro è l'oggetto che viene restituito di default dalla libreria Newtonsoft.

Per capire bene cosa utilizzate è necessario comprendere il flusso funzionale della porzione o dell'intera applicazione

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.