GetAllItems时,同一表上的关系会出错

时间:2012-05-31 19:10:07

标签: entity-framework entity-relationship

我在同一个表上创建了一个关系,并且在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);
    }
}

1 个答案:

答案 0 :(得分:1)

您的Fluent API配置有误。这将有效:

modelBuilder.Entity<WallItem>()
    .HasMany(c => c.Comments)
    .WithOptional()
    .HasForeignKey(c => c.ThreadRoot);