具有多个键的EF Find()

don*_*ote 1 c# entity-framework

我试图在一组具有外键和2个主键的EF类上使用Find(),但是我不断收到错误.

这是我的班级:

public class dbDDV
    {
        [ForeignKey("dbf")]
        [Column(Order = 0)]
        public int id { get; set; }

        [Key]
        [Column(Order = 1)]
        public DateTime D0 { get; set; }

        [Key]
        [Column(Order = 2)]
        public DateTime D1 { get; set; }

        public double V{ get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

对于id,D0和D1的特定值,我一直在尝试使用Find():

dbContext.mySetOfdbDDV.Find(myId,myD0,myD1)
Run Code Online (Sandbox Code Playgroud)

以下是我收到的错误:

System.ArgumentException:传递的主键值的数量必须与实体上定义的主键值的数量相匹配.

在这种情况下,Find()的正确方法是什么?

sst*_*tan 7

只是D0并且D1是你的复合主键的一部分(不像id那样奇怪,但我不是来判断你的设计).因此,您只应在调用时传递这两列的值Find

dbContext.mySetOfdbDDV.Find(myD0,myD1)
Run Code Online (Sandbox Code Playgroud)

  • 这有效。在我的实现中,我最终更改了设计,将 [Key] 添加到 id 列,以便同时成为主键和外键。 (2认同)