LINQ to SQL и проекция данных, MVC
-
06-07-2019 - |
Вопрос
Привет, у меня есть таблица с некоторыми значениями (ID), и, конечно, когда я получаю результат, я получаю только int ID, но я хочу, чтобы он был более удобным для пользователя, например, когда его номер 1, я хочу поместить строку "Avaible", когда ее 2 "Not avaible", im в среду N ярусов, и мне нужно, чтобы это было сделано в модели, каков наилучший способ сделать это, я должен объявить другой класс чтобы спроецировать строки, или я должен использовать что-то вроде словаря, Key - > Значение.
сейчас у меня просто есть это
return from t in db.products where t.productID==productID select t;
Решение
Если вы используете Linq to SQL, вам нужна еще одна таблица, которая будет содержать информацию о состоянии продукта:
Table Name: Product Status
Fields: ProductStatusID int Indentity Primary Key
ProductStatus nvarchar(50)
Добавьте поле в таблицу продуктов:
Field to Add: ProductStatusID int
Добавьте несколько статусов в новую таблицу и установите для ProductStatusID каждого продукта соответствующий идентификатор статуса.
Добавьте ограничение, которое соединяет два поля ProductStatusID вместе. Самый простой способ сделать это - создать диаграмму в SQL Server Management Studio Express, перетащить обе таблицы на диаграмму, а затем перетащить поле ProductStatusID из таблицы ProductStatus в таблицу Products и нажать кнопку ОК в открывшемся диалоговом окне. р>
Перестройте классы данных Linq to SQL. Это можно сделать, удалив и заново создав файл DBML и снова перетащив таблицы в конструктор.
Когда вы получаете объект products (p) из вашего объекта dataContext, вы должны увидеть это:
p.ProductStatus <-- The text description of the product's status.
Linq to SQL попадет в вашу таблицу ProductStatus и найдет соответствующее описание статуса.