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)
根据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运算符