0

方法創建ASP.NET核心1應用與EF核心1.我有兩個類有一個一對多的關係,遵循自定義功能,包括在EF

public class Country: EntityBase 
{ 
    public string Name { get; set; } 

    // fields for relations 

    public IQueryable<Singer> Singers { get; set; } 
} 

public class Singer : EntityBase 
{ 
    public string Name { get; set; } 

    // fields for relation 

    public int CountryId { get; set; } 
    public virtual Country Country { get; set; } 
} 

而且他們的映射

public class SingerMap 
{ 
    public SingerMap(EntityTypeBuilder<Singer> entityBuilder) 
    { 
     entityBuilder.HasKey(x => x.Id); 
     entityBuilder.Property(x => x.Id).ValueGeneratedOnAdd(); 

     entityBuilder.Property(x => x.Name).HasMaxLength(500); 

     //relational fields 
     entityBuilder.HasOne(x => x.Country).WithMany(x => x.Singers).HasForeignKey(x => x.CountryId); 
    } 
} 

public class CountryMap 
{ 
    public CountryMap(EntityTypeBuilder<Country> entityBuilder) 
    { 
     entityBuilder.HasKey(x => x.Id); 
     entityBuilder.Property(x => x.Id).ValueGeneratedOnAdd(); 
     entityBuilder.Property(x => x.Name).HasMaxLength(500); 
    } 
} 

我爲這個實體創建了通用的Repository模式。沒有爲包括如下

public virtual IEnumerable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties) 
    { 
     IQueryable<T> query = _context.Set<T>(); 
     foreach (var includeProperty in includeProperties) 
     { 
      query = query.Include(includeProperty); 
     } 
     return query.AsEnumerable(); 
    } 

物業的功能,我把這種方法

[HttpGet] 
    public JsonResult GetAllForIndex() 
    { 
     var result = Service.AllIncluding(x => x.Country); 
     return Json(result); 
    } 

並在此之後我得到這個錯誤

類型導航屬性的「歌手」上實體類型「國家」 是'IQueryable',因此無法創建具體實例 。可以在使用前初始化屬性,將 公共無參數構造函數添加到該類型中,或者使用可以爲其分配一個HashSet <>或列表<>的類型。

我對解決方案沒有任何想法。 請幫忙。

回答

2
public IQueryable<Singer> Singers { get; set; } 

應該

public List<Singer> Singers { get; set; } 

異常消息非常狀態究竟什麼是錯的,什麼是應該改成。您幾乎可以使用任何來自HashSet<>List<>的類型。

+0

@ElvinMammadov - 沒問題。請考慮接受答案(請參閱[如何接受SO答案](http://meta.stackexchange.com/a/5235))。 – Igor