LINQ to SQL e Data Projection, MVC
-
06-07-2019 - |
Domanda
HI Ho una tabella con alcuni valori (ID), e ovviamente quando ottengo il risultato ho solo gli ID int, ma voglio metterlo più facile da usare, ad esempio quando è il numero 1, io voglio mettere la stringa "Disponibile", quando i suoi 2 "Non disponibili" sono in un ambiente di livello N e devo farlo sul Modello, qual è il modo migliore per farlo, devo dichiarare un'altra classe per proiettare le stringhe o devo usare qualcosa come un dizionario, Key - > Valore.
ora ho questo
return from t in db.products where t.productID==productID select t;
Soluzione
Se si utilizza Linq to SQL è necessaria un'altra tabella per contenere lo stato del prodotto:
Table Name: Product Status
Fields: ProductStatusID int Indentity Primary Key
ProductStatus nvarchar(50)
Aggiungi un campo alla tua tabella prodotti:
Field to Add: ProductStatusID int
Aggiungi alcuni stati alla tua nuova tabella e imposta ProductStatusID di ciascun prodotto su un ID di stato appropriato.
Aggiungi un vincolo che collega insieme i due campi ProductStatusID. Il modo più semplice per farlo è creare un diagramma in SQL Server Management Studio Express, trascinare entrambe le tabelle sul diagramma, quindi trascinare il campo ProductStatusID dalla tabella ProductStatus alla tabella Products e fare clic su OK nella finestra di dialogo che si apre.
Ricostruisci le tue classi di dati Linq to SQL. Puoi farlo cancellando e ricreando il file DBML e trascinando nuovamente le tue tabelle nel designer.
Quando ottieni un oggetto products (p) dal tuo oggetto dataContext, ora dovresti vedere questo:
p.ProductStatus <-- The text description of the product's status.
Linq to SQL raggiungerà la tabella ProductStatus e cercherà la descrizione dello stato appropriata.