同じテーブルにリレーションシップを作成しました。リレーションシップはOnModelCreatingで宣言されています。以下のコードを参照してください。
次のコードですべてのアイテムを取得しようとするとvar allitems = MyContext.WallItems
、次のエラーが発生します:「/」アプリケーションのサーバーエラー。タイプ'WallItem'のオブジェクトをタイプ'System.Collections.Generic.List`1[WallItem]'にキャストできません。
私は私の関係を間違った方法で定義しましたか、それともより良い方法がありますか?
[Table("WallItems")]
public class WallItem
{
public WallItem() { Id = Guid.NewGuid(); }
/// <summary>
/// Item Id
/// </summary>
[Key]
public Guid Id { get; set; }
/// <summary>
/// Enables replies on wall items. Links to the root item.
/// </summary>
public Guid? ThreadRoot { get; set; }
/// <summary>
/// Collection of replies
/// </summary>
public virtual List<WallItem> Comments { get; set; }
}
public class MyContext : DbContext
{
public DbSet<WallItem> WallItems { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<WallItem>()
.HasOptional(c => c.Comments)
.WithMany()
.HasForeignKey(c => c.ThreadRoot);
}
}