LINQ to SQL y Proyección de datos, MVC
-
06-07-2019 - |
Pregunta
HI Tengo una tabla con algunos valores (ID) y, por supuesto, cuando obtengo el resultado obtuve solo las ID int, pero quiero ponerlo más fácil de usar, por ejemplo, cuando es el número 1, i quiero poner la cadena '' Disponible '', cuando está 2 '' No disponible '', estoy en un entorno de N niveles y necesito hacer esto en el Modelo, cuál es la mejor manera de lograr esto, tengo que declarar otra clase para proyectar las cadenas, o debo usar algo como un diccionario, Key - > Valor.
ahora mismo solo tengo esto
return from t in db.products where t.productID==productID select t;
Solución
Si está utilizando Linq to SQL, necesita otra tabla para contener el estado del producto:
Table Name: Product Status
Fields: ProductStatusID int Indentity Primary Key
ProductStatus nvarchar(50)
Agregue un campo a su Tabla de productos:
Field to Add: ProductStatusID int
Agregue algunos estados a su nueva tabla y establezca el ProductStatusID de cada producto en un ID de estado apropiado.
Agregue una restricción que conecte los dos campos ProductStatusID juntos. La forma más fácil de hacerlo es crear un diagrama en SQL Server Management Studio Express, arrastrar ambas tablas al diagrama y luego arrastrar el campo ProductStatusID de la tabla ProductStatus a la tabla Products, y hacer clic en Aceptar en el cuadro de diálogo que se abre.
Reconstruya sus clases de datos Linq a SQL. Para ello, elimine y vuelva a crear el archivo DBML y arrastre sus tablas al diseñador nuevamente.
Cuando obtiene un objeto de productos (p) de su objeto dataContext, ahora debería ver esto:
p.ProductStatus <-- The text description of the product's status.
Linq to SQL llegará a su tabla ProductStatus y buscará la descripción de estado apropiada.