LINQ to SQLおよびデータ投影、MVC
-
06-07-2019 - |
質問
HIいくつかの値(ID)を持つテーブルがあります。もちろん、結果を取得するときにint IDだけを取得しましたが、たとえば、その番号が1の場合、文字列" Avaible"を置きたいとき、その2つの" Not avaible"、imはN層環境にあり、モデルでこれを行う必要があります、これを達成するための最良の方法は、別のクラスを宣言する必要があります文字列を投影する、または辞書のようなものを使用する必要がありますキー->値。
今、私はこれを持っているだけ
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)
Productsテーブルにフィールドを追加します:
Field to Add: ProductStatusID int
新しいテーブルにステータスを追加し、各製品のProductStatusIDを適切なステータスIDに設定します。
2つのProductStatusIDフィールドを接続する制約を追加します。これを行う最も簡単な方法は、SQL Server Management Studio Expressでダイアグラムを作成し、両方のテーブルをダイアグラムにドラッグしてから、ProductStatusIDフィールドをProductStatusテーブルからProductsテーブルにドラッグし、開くダイアログで[OK]をクリックすることです。
Linq to SQLデータクラスを再構築します。これを行うには、DBMLファイルを削除して再作成し、テーブルをデザイナーに再度ドラッグします。
dataContextオブジェクトから製品オブジェクト(p)を取得すると、次のように表示されます。
p.ProductStatus <-- The text description of the product's status.
Linq to SQLはProductStatusテーブルに到達し、適切なステータスの説明を検索します。