Operazioni CRUD con EF6 e MVC5

Scrivere operazioni CRUD di base è molto semplice se utilizziamo  Entity Framework 6 e la sua desinenza “Database First” in accoppiata alle fuzionalità di scaffolding di MVC 5 che ci evitano di scrivere una riga di codice.

Per applicare la modalità “Database First” Visual Studio 2013, anche versione Express per Web, offre un comodo designer per generare un data model completo di classi con proprietà a partire dallo schema di un database con le relative tabelle e relazioni, il tutto salvato in un file xml avente estensione .edmx.

Per la creazione del database possiamo utilizzare un DbLocal creando un progetto Database Project:

DataDB

il quale si presenterà come un progetto vuoto dove potremo aggiungere le tabelle del nostro database e uno script di post deployment che ci permetterò di aggiungere dei dati di test per il nostro database dopo aver fatto il deploy del progetto, attraverso l’esecuzione del progetto, che si occuperà della creazione del database.

MERGE INTO Category AS Target
USING (VALUES 
        (1, 'PRI'), 
        (2, 'PEN')
)
AS Source (IdCategoria, Descrizione)
ON Target.IdCategoria = Source.IdCategoria
WHEN NOT MATCHED BY TARGET THEN
INSERT (IdCategoria, Descrizione)
VALUES (IdCategoria, Descrizione);

MERGE INTO Contracts AS Target 
USING (VALUES 
        (1,GETDATE(), GETDATE(), 1)
) 
AS Source (IdContratto,DataContratto,DataScadenza,IdCategoria) 
ON Target.IdContratto = Source.IdContratto 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (IdContratto,DataContratto,DataScadenza,IdCategoria) 
VALUES (IdContratto,DataContratto,DataScadenza,IdCategoria);

MERGE INTO Customers AS Target 
USING (VALUES 
        (1,'MRORSS69E27H501L', 'MARIO','ROSSI', '1969-05-27','M')
) 
AS Source (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso) 
ON Target.CodiceFiscale = Source.CodiceFiscale 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso) 
VALUES (IdContratto,CodiceFiscale,Nome,Cognome,DataNascita,Sesso);

N.B. attenzione che ogni qualvolta eseguite il progetto lo script post deploy viene eseguito

Di seguito la struttura del progetto dopo aver aggiunto le tabelle e lo script di deploy

DataDBProject

Dal Sql Server Objects Explorer possiamo notare la struttura del database creato nel database server locale, in questo caso (localdb)ProjectsV12:

SqlServerObjectExplorer

A questo punto siamo pronti per creare la nostra applicazione web MVC 5 per lo scopo prefissato. Una volta creata la soluzione si dovrà scaricare, tramite Nuget, Entity Framework giunto alla versione 6.1, in questo modo sarà possibile creare un modello dati sulla base del database appena creato. Per far questo aggiungiamo nella cartella Model un file di tipo .edmx

BankDataModel

alla finestra successiva scegliamo di farci creare la nostra classe model dal database, quindi definiamo la stringa di connessione e via via gli altri parametri .

BankDataDesigner

Connection

Quindi scegliamo le tabelle che saranno le nostre entità e salviamo la nostra classe model con un namespace a piacere

EDMX

La nostra solution conterrà adesso diversi file in più mentre in automatico apparirà il designer di EF con le classi appena create.

modello

In particolare la classe BankDataModelContext, che eredita dalla classe DbContext , fornisce una proprietà di tipo DbSet per ogni modello collegato alle tabelle scelte per la generazione. Prima di proseguire dobbiamo effettuare la build del progetto altrimenti per la prossima attività di creazione automatica del codice CRUD in seguito alla attività di scaffolding che faremo non otterremo nulla.

I passaggi per terminare l’attività sono semplici e si possono riassumere nel seguente modo:

  • aggiungere un controller di tipo Scaffolded come da esempio:

image

  • nella maschera successiva proseguire :

Scaffold

  • quindi scegliere la classe che fungerà da controller presa dal datacontext appena generato

AddController

Ripetere l’operazione per tutte le classi per cui si devono fare operazioni CRUD, nel nostro caso Customers e Category e otterremo una solution del genere:

                 Views                                       controllers

  Come possiamo vedere all’interno dei controllers troviamo tutte le operazioni CRUD sul model scelto, inoltre è stata creata per noi la view corrispondente, non ci rimane che agganciarle al nostro menu

@Html.ActionLink("Contracts", "Index", "Contracts")
@Html.ActionLink("Customers", "Index", "Customers")
@Html.ActionLink("Categories", "Index", "Categories")

Siamo pronti per lavorare!

Pubblicato in MVC | Contrassegnato , | Lascia un commento

Aggiornamento progetti Mvc 4 verso Mvc 5

Se mi trovate nella situazione per cui dovete aggiornate un progetto alla versione 4 alla 5 di MVC potreste trovarvi nella condizione in cui vi si presenta il seguente errore:

image

Dovete riaggiornare la libreria WebHelpers di Microsoft.AspNet tramite il comando sulla console manager di Nuget:

Install-Package Microsoft.AspNet.WebHelpers

Se poi doveste trovarvi ancora l’errore seguente:

image

Allora dovete applicare, sempre tramite Nuget, il seguente comando:

Install-Package Microsoft.AspNet.WebPages.Data

Pubblicato in NET | Lascia un commento

Tools per sviluppo Web

Su Visual Studio Magazine un elenco di tools che ogni sviluppatore Web dovrebbe avere, ovviamente ognuno di noi ha le sue preferenze ma alcuni sono dei must se si vuole lavorare “comodi” . 

Pubblicato in NET, Utility | Contrassegnato | Lascia un commento

Storage illimitato su OneDrive per abbonati Office 365

Buone notizie per i sottoscrittori di Office 365: a partire dal 27 Ottobre lo storage su OneDrive è illimitato e non si dovranno affrontare costi aggiuntivi. Maggiori dettagli sul blog di OneDrive. 

Pubblicato in Varie | Contrassegnato | Lascia un commento

Iniziare con DocumentDB

Avete in mente di iniziare ad utilizzare uno storage NoSql? Ne avete abbastanza dei db relazionali? No, tranquilli non sto facendo pubblicità a nessuno ma un’occhiata a DocumentDb di Microsoft disponibile fra le offerte di Azure la darei, partendo dall’ introduzione

Pubblicato in NET | Lascia un commento

Windows 10 TP Build ISO

Su WindowsBlogItalia c’è un interessante articolo su come estrapolare la ISO dalla nuova release di WIndows 10 TP.

Pubblicato in Windows 10 | Contrassegnato | Lascia un commento

Event Tracing in RTM

Microsoft ha rilasciato in RTM dei package EventSource e EventRegister, che aggiunge altre funzionalità al tracing e al logging delle nostre applicazioni .NET.

Dettagli alla pagina dell’autore Cosmin Radu.

Pubblicato in Framework | Contrassegnato , | Lascia un commento