0

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

1 回答 1

1

您的 Fluent API 配置有误。这将起作用:

modelBuilder.Entity<WallItem>()
    .HasMany(c => c.Comments)
    .WithOptional()
    .HasForeignKey(c => c.ThreadRoot);
于 2012-05-31T19:57:51.050 回答