我在同一个表上创建了一个关系,并且在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);
}
}
答案 0 :(得分:1)
您的Fluent API配置有误。这将有效:
modelBuilder.Entity<WallItem>()
.HasMany(c => c.Comments)
.WithOptional()
.HasForeignKey(c => c.ThreadRoot);