如何在 EF 中获取表列的列表

本文关键字:列表 获取 EF | 更新日期: 2023-09-27 18:35:52

我需要EF中表的列名,我有它的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();

如何在 EF 中获取表列的列表

从您的评论中,我认为这就是您正在寻找的。但是设计明智,你所做的是不好的。我稍后会解释。

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

对于每个州,您在零售商表中都有一个相应的列 州名称 1、州名称 2、州名称 3

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

此外,在新列中,您将引入更多未使用/冗余数据的

无意中。

由于这是一个many-to-many的情况(一个州可以有很多零售商,一个零售商可以在许多州),最好的方法是创建3 个表(零售商、州、零售商州),其中按RetailerState表将扮演从StateRetailer表中映射条目的角色

Retailer
---------
[RetailerId] 
[RetailerName]
State
------
[SId] 
[StateName]
RetailerState
--------------
[RetailerId] 
[SId]