3

如何通过使用不是主键的键来获得结果列表?更具体地说,我有一个复合主键,我想用一列的参数检索所有匹配项。

我认为,在控制器中的 ActionResult 中,它类似于

tableModel tbmodel = db.tableModels.Find(i => i.partialPK == parameter)

但事实并非如此,因为 Find() 仅适用于整个 PK。

我在实体模型类中将我的 PK 声明为:

    [Key]
    [Column(Order = 0)] 
    public int PK1 { get; set; }
    [Key]
    [Column(Order = 1)] 
    public string PK2 { get; set; }
4

2 回答 2

8

根据DbSet.Find您可以传入以逗号分隔的主键

db.tableModels.Find(PK1, PK2)

Find 方法将对象数组作为参数。使用复合主键时,传递以逗号分隔的键值,并按照它们在模型中定义的顺序传递。

但是,如果您只想使用一个值,则可能必须使用

db.tableModels.Where(i => i.partialPK == parameter)

或等效的 Linq 运算符

于 2013-08-31T07:44:38.350 回答
0

如果您尝试使用 linq 查询从数据库中获取对象,请使用:.FirstOrDefaultwith.Where

Customer customer = db.Customers.Where(c => c.Email == auth.Email).FirstOrDefault();

dbDbContext 并且CustomerDbSet

于 2020-07-21T18:19:58.790 回答