2012-02-20 90 views
0

有谁能告诉我这是什么样的错误?指定的成员类型不支持linq

LINQ to Entities不支持指定的类型成员'OrderDetails'。仅支持初始化程序,实体成员和实体导航属性。 这段代码在这里有什么问题?

return storeDB.Albums.OrderByDescending(a=>a.OrderDetails.Count()).Take(count).ToList()‌​ 
+0

你能在控制器发布代码的异常的原因,并通过行动返回的观点? – Jayanga 2012-02-20 12:17:15

+0

事实上,我通过删除CartSummary.cshtml文件中的相同代码行来解决这个问题,谢谢。 – Vendetta 2012-02-20 15:48:48

+0

先生,我现在得到这个错误“LINQ to Entities不支持指定的类型成员'OrderDetails',只支持初始化器,实体成员和实体导航属性。”这里有什么不对?返回storeDB.Albums.OrderByDescending(a => a.OrderDetails.Count())。Take(count).ToList(); – Vendetta 2012-02-20 15:55:42

回答

0

由于您使用EF代码第一次尝试添加配置类映射一个相册和订单明细之间一对多的关系。以下是相册的示例配置。

public class AlbumConfiguration : EntityTypeConfiguration<Album> 
    { 
     public AlbumConfiguration() 
     { 
      HasKey(a => a.Id); 
      HasMany(album => album.Orders).WithOptional(order => order.Album). 
       HasForeignKey(order => order.AlbumId); 
     } 
    } 

和您的订单明细应如下

OrderDetail 
{ 
    public int OrderDetailId { get; set; } 
    public int OrderId { get; set; } 
    public int AlbumId { get; set; } 
    public int Quantity { get; set; } 
    public decimal UnitPrice { get; set; } 
    public virtual Album Album { get; set; } 
    public virtual Order Order { get; set; } 
} 

被改变,你的相册,类应该有订单明细的虚拟目录。

并最终在您的DbContext类中通过重写OnModelCreating方法来添加配置。样本类将是

public class YourContext : DbContext 
    { 

     // your DBSets and contructors, etc 


     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Configurations.Add(new AlbumConfiguration());    
      base.OnModelCreating(modelBuilder); 
     } 


    } 

尝试,这可能是这是

+0

谢谢你的伟大工作。 – Vendetta 2012-02-22 17:00:15

+0

如果这是答案,请将此标记为答案 – Jayanga 2012-02-23 04:50:24

+0

如何标记为答案。 – Vendetta 2012-02-23 08:06:54

相关问题