簡體   English   中英

如何在EF中獲取表列的列表?

[英]How to get list of a table columns in EF?

我需要EF中有它的ID的表的ColumnName。 我的桌子是這樣的:

零售商

[RetailerId] [int] IDENTITY(1,1) NOT NULL,
[RetailerName] [varchar](50) NOT NULL,
[StateName1] [bit] NOT NULL,
[StateName2] [bit] NOT NULL,
[StateName3] [bit] NOT NULL,

狀態

   [SId] [int] IDENTITY(1,1) NOT NULL,
   [StateName] [varchar](50) Not Null

我收到某職能部門的SId ,需要選擇該州的所有零售商。 就像是:

var listOfRetailers = (from m in db.Retailers where m.[a column that it's id is equal to SId] == true select m ).toList();

從您的評論中,我認為這就是您想要的。 但是明智的設計是不好的。 我會盡快解釋。

var listOfRetailers;
if(SId == 1)
{
listOfRetailers = db.Retailers.select(r=> r.StateName1.Equals(true)).ToList();
}
else if(SId == 2)
{
listOfRetailers  = db.Retailers.select(r=> r.StateName2.Equals(true)).ToList();
}
else if(SId == 3)
{
listOfRetailers  = db.Retailers.select(r=> r.StateName3.Equals(true)).ToList();
}

編輯

從技術上講,這是一個糟糕的設計。 因為您假設您的國家表將有3條記錄

1 - ACT
2 - NSW
3 - NT

對於每個州,您在零售商表StateName1,StateName2,StateName3中都有一個對應的列

假設您要引入第4個狀態(例如4 - VIC )。 現在,您需要在“零售商”表中引入一個名為StateName4的新列。 (這樣做將更改代碼級別和數據庫級別)

同樣,在新列中,您還將引入其他未使用/冗余數據的竊聽。

由於這是many-to-many情況(一個州可以有許多零售商,而一個零售商可以在許多州),所以最好的方法是創建3個表(Retailer,State,RetailerState),其中由RetailerState表發揮作用StateRetailer表中映射條目的作用

Retailer
---------
[RetailerId] 
[RetailerName]

State
------
[SId] 
[StateName]

RetailerState
--------------
[RetailerId] 
[SId] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM