2012-05-31 23 views
0

我在同一個表上創建了關係,並且在OnModelCreating中聲明瞭關係。見下面的代碼。同一個表上的關係在GetAllItems時給出錯誤

試圖獲取以下代碼的所有項目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

您的Fluent API配置有誤。這將工作:

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

doh ... grazie mille :) – Kulvis

+0

有沒有辦法在同一個關係中添加一個條件?恩。 wallitem.TypeId == 2? – Kulvis

相關問題