Quando si tenta di creare una migrazione iniziale del mio database EF7 Primo database eseguendo dalla riga di comando:
dnx ef migrations add Initial
Ottengo l'errore:
System.InvalidOperationException: la proprietà 'ExerciseTemplateId' non può esistere sul tipo di entità 'oggetto' perché la proprietà non è contrassegnata come stato shadow e nessuna proprietà CLR corrispondente esiste sul tipo sottostante. Stacktrace completo
Qualche idea?
Per qualche motivo EF7 non sembra gradire la proprietà chiave principale ExerciseTemplateId sul mio modello:
public class ExerciseTemplate
{
public int ExerciseTemplateId { get; set; }
public string InitalCode { get; set; }
public string ClassName { get; set; }
public string MainMethodName { get; set; }
public int ExerciseForeignKey { get; set; }
public Exercise Exercise { get; set; }
}
L'unica parte interessante del modello ExerciseTemplate è una relazione uno a uno con il modello Exercise:
public class Exercise
{
public int ExerciseId { get; set; }
public string Name { get; set; }
public string Guidance { get; set; }
public ExerciseTemplate Template { get; set; }
public List<ExerciseCategory> Categories { get; set; }
public List<Test> Tests { get; set; }
}
Questa domanda è già lunga quindi il mio DBContext è in questo Gist di DBContext
Tutti i modelli e il contesto DB possono essere trovati in questo modello e nel contesto Gist
Per farla breve: non utilizzare l' object
o Type
come tipo di proprietà nelle classi del modello. Non ha alcuna rappresentazione nel database.
Se è assolutamente necessario archiviare oggetti arbitrari, è possibile utilizzare un serializzatore e archiviare gli oggetti serializzati come BLOB nel database.