Nel database dell'applicazione Web ASP.NET MVC 4/EF 5 ho una tabella con una colonna Commenti su cui concatenare nuovi commenti. Nel tradizionale T-SQL, mi piacerebbe scrivere: Come causare a EF la creazione dell'aggiornamento SQL con stringa concat?
UPDATE MyTable SET Comments = 'Hi' + CHAR(13)+CHAR(10) + Comments WHERE ID = 2
trovo con metodo LINQ per EF (UOW + Pattern Repository - che mi dispiace), devo interrogare prima il valore corrente di Commenti e anteporre i miei nuovi commenti ad esso:
StringBuilder displayComment = new StringBuilder();
var item = uow.MyRepos.Where(i => i.ID == 2);
item.Comments = displayComment.Append("Hi")
.Append(Environment.NewLine)
.Append(item.Comments)
.ToString();
uow.Save();
C'è un modo per scrivere questo aggiornamento senza la necessità di interrogare il DB? Mi piacerebbe in qualche modo ottenere EF per generare il t-sql sopra. I commenti possono essere lunghi e non mi interessa cosa contenga. Le prestazioni sono una preoccupazione.
Grazie in anticipo.
aggiungo questo qui come un commento, perché non è una risposta: hai ragione su quello che EF può fare, e come fallo. Tuttavia, se hai bisogno di fare qualcosa che EF non supporta, non hai bisogno di spendere energie per cercare di farlo. Puoi semplicemente eseguire una query personalizzata o una stored procedure per risolvere il tuo problema. Può sembrare meno intelligente, ma non penso che lo sia. Ci sono molte cose che EF non può fare, ma * ti è permesso * di fare le cose in altro modo, invece di provare a implementare soluzioni magiche o hacky per il tuo problema. Lo stesso problema si presenta con aggiornamenti di massa o eliminazioni. La soluzione è semplice – JotaBe
Grazie per aver detto questo @JotaBe - Stavo cercando di rimanere all'interno delle linee, ma a volte non è la soluzione migliore. – LoJo
@LoJo hai detto *** Mi piacerebbe in qualche modo ottenere EF per generare il t-sql sopra *** - ecco perché la tua domanda è stata upvoted a *** 5 *** (al momento in cui scrissi questo). Altrimenti è solo un requisito normale, niente di speciale e nemmeno una risposta deve essere aggiunta. Dovresti averlo capito con qualche commento e hai cancellato subito la domanda. – Hopeless