Я пишу приложение, используя 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
, я не хочу указывать ModifiedDate
в моем запросе OData.
Однако, поскольку ModifiedDate
является первичным ключом, когда я отправляю запрос GET в /odata/QuizAnswerHistory(StudentId=1,QuestionId=2)
, я получаю ошибку: "Количество переданных первичных ключей должно соответствовать числу первичного ключа значения, определенные для объекта. "
Возможно ли сохранить ModifiedDate
в качестве первичного ключа, но не требовать его в моих запросах?
Существует два варианта решения проблемы: