ASP.MVC db Find(),但带有非主键参数

use*_*ser 2 database asp.net-mvc find composite-primary-key dbset

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

我想,在Controller的ActionResult中,它就像是

tableModel tbmodel = db.tableModels.Find(i => i.partialPK == parameter)
Run Code Online (Sandbox Code Playgroud)

但情况并非如此,因为Find()仅适用于整个PK.

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

    [Key]
    [Column(Order = 0)] 
    public int PK1 { get; set; }
    [Key]
    [Column(Order = 1)] 
    public string PK2 { get; set; }
Run Code Online (Sandbox Code Playgroud)

Pau*_*wat 8

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

db.tableModels.Find(PK1, PK2)
Run Code Online (Sandbox Code Playgroud)

Find方法将对象数组作为参数.使用复合主键时,传递以逗号分隔的键值,其顺序与模型中定义的顺序相同.

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

db.tableModels.Where(i => i.partialPK == parameter)
Run Code Online (Sandbox Code Playgroud)

或等效的Linq运算符