我正在使用EF6 Code First编写应用程序,并通过OData端点公开我的实体。我有一个本质上是一个跟踪另一个实体的所有先前值的变更跟踪实体;类似于以下内容:
public class QuizAnswerHistory
{
[Key]
public int StudentId { get; set; }
[Key]
public int QuestionId { get; set; }
[Key]
public DateTime ModifiedDate { get; set; }
public string AnswerValue { get; set; }
}
我还有一个QuizAnswer
实体,它具有完全相同的属性,但它的复合主键不包括ModifiedDate
。它仅引用Student
实体和Question
实体。
现在,因为我希望能够获得特定QuizAnswerHistory
的整个Student/Question
实体,所以我不想在我的OData中指定ModifiedDate
请求。
但是,因为ModifiedDate
是主键,当我向/odata/QuizAnswerHistory(StudentId=1,QuestionId=2)
发送GET请求时,我收到错误,"传递的主键值的数量必须匹配实体上定义的主键值的数量。"
是否可以将ModifiedDate
作为主键保留,但在我的请求中不需要它?
答案 0 :(得分:0)
有两种方法可以解决此问题: