同じタイプの親をオプションで参照できるモデルを作成しようとしています。次に例を示します。
public class Category
{
public virtual long CategoryID { get; set; }
public virtual Category? ParentCategory { get; set; }
public virtual int UserID { get; set; }
public virtual string Name { get; set; }
}
ご覧のとおり、ParentCategoryというオプションのメンバーがあります。これはオプションで、Categoryタイプ(つまり同じタイプ)のクラスを参照します。ご想像のとおり、ルートノードに親がない単純なカテゴリツリーを作成しようとしています。
これにより、Entity Frameworkがデータベースを作成しようとすると、次のエラーが発生します。
"タイプ'MyProject.Models.Category'のプロパティ'ParentCategoryID'のForeignKeyAttributeが無効です。依存型'MyProject.Models.Category'でナビゲーションプロパティ'Category'が見つかりませんでした。Name値は有効なナビゲーションである必要がありますプロパティ名。"
私もこれを試しました:
public class Category
{
public virtual long CategoryID { get; set; }
[ForeignKey("Category")]
public virtual long? ParentCategoryID { get; set; }
public virtual int UserID { get; set; }
public virtual string Name { get; set; }
}
しかし、これも同じエラーになりました。
EFコードファーストを使用してこれをモデル化することは可能ですか?データベースを手動で作成する場合は、データベースでモデル化するのは簡単です。
よろしくお願いしますベン