0

我需要 EF 中一个表的 ColumnName,我有它的 ID。我的表是这样的:

零售商

[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();
4

1 回答 1

0

根据您的评论,我认为这就是您要寻找的。但是明智的设计你所做的很糟糕。我将很快解释。

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();
}

编辑

从技术上讲,这是一个糟糕的设计。因为您假设您的 States 表将有 3 条记录

1 - ACT
2 - NSW
3 - NT

对于每个州,您在零售商表 StateName1、StateName2、StateName3 中都有相应的列

假设您要引入第 4 个状态(例如4 - VIC)。现在您需要StateName4在您的零售商表中引入一个名为的新列。(这样做会有代码级别和数据库级别的更改)

此外,您还可以通过新列引入额外无意中听到的未使用/冗余数据。

因为这是一种many-to-many情况(一个州可以有很多零售商,一个零售商可以在很多州),最好的方法是创建 3 个表(Retailer、State、RetailerState),其中 by RetailerStatetable 将扮演映射条目的角色State,Retailer

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

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

RetailerState
--------------
[RetailerId] 
[SId] 
于 2012-06-01T02:06:31.080 回答