У меня есть проблема в Entity Framework 4.1, с которой я, кажется, ходил кругами. Я пытаюсь создать простой домен, в котором у меня есть таблица дел, которая имеет отношение 1..M к таблице вопросов. Затем у меня есть унаследованная таблица («Унаследованный вопрос»), которая разделяет идентификатор из таблицы вопросов.
Я хотел бы связать классы Question и InheritedQuestion со случаем, с которым они связаны, чтобы я мог сделать что-то вроде:
var inheritedCase = context.Set<Case<InheritedQuestion>>.First();
InheritedQuestion inheritedQuestion = inheritedCase.Case.Questions.First();
Это вообще возможно? Я считаю, что у EF есть ограничения в отношении дженериков. Мне интересно, смогу ли я обойти это с помощью ручного сопоставления свойств класса?
В настоящее время я не могу решить, реализовать ли это через EF. Я включил основание моей проблемы ниже. Я пытался реализовать это через свободный API.
Таблица случаев
Идентификатор (ПК)
Таблица вопросов
CaseId (FK)
QuestionId (PK)
Field1
Унаследованный вопрос
QuestionId (FK)
Field2
Это мои занятия.
public class Case<T> where T : Question
{
ICollection<T> Questions {get;set;}
}
public class Question
{
string Field1 {get;set;}
Case<Question> Case {get;set;}
}
public class InheritedQuestion : Question
{
string Field2 {get;set;}
new Case<InheritedQuestion> Case {get;set;}
}