2013-05-18 2 views
0

У меня есть проблема, отображающие отношения в то время как обратное проектирование в Visual Studio .NETнедопустимого имени столбца в .net при использовании наследования

Я использую наследование:

public class Quiz : Component 
{ 
    public QuizQuestion rootQuestion { get; set; } 
    public override String getType() { return "quiz"; } 
} 

свойство rootQuestion не указано в motherclass, она существует только в подклассе

Quiz не существует в виде таблицы в моей базе данных SQLServer (только таблица QuizQuestions и Component существует в databas e, (мой учитель сказал мне сделать это так: java-часть этого проекта).

Но я хочу, чтобы в подклассе Quiz имелось свойство rootQuestion, которое ссылается на quizRootQuestion в моей базе данных. Так вот что я сделал:

public class QuizMapper : EntityTypeConfiguration<Quiz>   
{ 
    public QuizMapper()    
    { 
     this.HasKey(t => t.ComponentID); 
     this.HasOptional(c => c.rootQuestion) 
      .WithMany().Map(m => m.MapKey("quizRootQuestionID"));  

    } 
} 

public class QuizQuestionMap : EntityTypeConfiguration<QuizQuestion> 
{ 
    public QuizQuestionMap() 
    { 
     // Properties 
     // Table & Column Mappings 
     this.HasKey(t => t.QuestionID); 
     this.ToTable("QuizQuestions"); 
     this.Property(t => t.QuestionID).HasColumnName("questionID"); 
    } 
} 

Я получаю эту ошибку, когда я пытаюсь запустить в браузере:
Неверное имя столбца «rootQuestion_QuestionID».

таблицы в моей базе данных:

компонентов:

componentId     
    quizRootQuestionID   
    TypeId(=discriminator) 

QuizQuestions

questionID     
question 

Может кто-то пожалуйста, скажите мне, что я делаю неправильно?

+0

да, я использую Entity Framework 5. структуру: учебный курс имеет разные компоненты, 1 из них - викторина – PrisonMike

ответ

0

Вы бы получить именно это исключение, если вы забыли добавить QuizMapper конфигурации модели строителя в OnModelCreating вашего полученного контекста:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Configurations.Add(new QuizMapper()); 
    modelBuilder.Configurations.Add(new QuizQuestionMap()); 
} 
Смежные вопросы