私は次のクラスを持っています:
public class Page : BaseModel
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PageID { get; set; }
public int? ParentID { get; set; }
public string Name { get; set; }
public virtual Page Parent { get; set; }
public virtual ICollection<Page> Children { get; set; }
public IDictionary<int, string> PossibleParents
{
get
{
Dictionary<int, string> items = new Dictionary<int, string>();
items.Add(-1, "Please Select");
using (var context = new WebsiteContext())
{
var pages = context.Pages;
foreach (var p in pages)
items.Add(p.PageID, p.Name);
}
return items;
}
}
public Page()
{
this.Order = 0;
this.Live = false;
}
}
public class CommodityPageMap : EntityTypeConfiguration<Page>
{
public CommodityPageMap()
{
HasOptional(x => x.Parent)
.WithMany(x => x.Children)
.HasForeignKey(x => x.ParentID)
.WillCascadeOnDelete(false);
}
}
問題
ParentID
ページを親ページにリンクするようにマップすると想定しました。ただし、データベースの更新時に EF が作成したようParent_PageID
です。設定ParentID
すると、関連付けが適切に作成されず、 null でParents
あるため要素が含まれていません。Parent_PageID
私が試してみました
削除するParentID
と、外部キーを設定するために必要なため、コンパイルされません。アクセス時に実行時にエラーが発生し、モデルに追加して無視するのはばかげているように見えるため、データ注釈[Column("Parent_PageID")]
を追加できません。ParentID
PossibleParents
Parent_PageID
ParentID
私は何かが欠けていると思いますが、助けていただければ幸いです。
編集
以下を追加してみました:
public int? ParentID { get { return this.Parent_PageID; } set { this.Parent_PageID = value; } }
public int? Parent_PageID { get { return this.ParentID; } set { this.Parent_PageID = value; } }
しかし、これはSequence contains no elements
アクセスしようとすると発生しますPossibleParents
。