EF7コードファースト - プロパティーは、エンティティタイプ 'オブジェクト'に存在することはできません。

asp.net-core-mvc c# entity-framework-core

質問

問題

コマンドラインから実行してEF7 Code Firstデータベースの初期移行を作成しようとすると、次のようになります。

dnx ef migrations add Initial

私はエラーが表示されます:

System.InvalidOperationException: 'ExerciseTemplateId'プロパティは、プロパティがシャドウ状態としてマークされておらず、対応するCLRプロパティが基になる型に存在しないため、エンティティ型 'object'に存在できません。 完全なスタックトレース

何か案は?

エラーを引き起こすモデル

何らかの理由でEF7が私のモデル上で主キーのプロパティExerciseTemplateIdを好きではないようです:

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; }
}

もっと詳しく

ExerciseTemplateモデルの唯一興味深い部分は、Exerciseモデルとの1対1の関係です。

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; }
}

この質問はすでに長いので、私のDBContextはこのDBContext Gistにあります

更新

すべてのモデルとDBコンテキストは、このモデルとコンテキストのGistにあります

受け入れられた回答

長いストーリーは短いです:モデルクラスでobjectまたはTypeをプロパティTypeとして使用しないでください。データベースには表現がありません。

任意のオブジェクトを絶対に保存する必要がある場合は、シリアライザを使用して、シリアライズされたオブジェクトをBLOBとしてデータベースに格納することができます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ