linq不支持指定的成员类型

时间:2012-02-20 12:07:18

标签: asp.net-mvc-3

谁能告诉我这是什么错误?

  

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

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

1 个答案:

答案 0 :(得分:0)

由于您正在使用EF代码,因此首先尝试添加配置类以映射Album和OrderDetails之间的一对多关系。以下是专辑的示例配置。

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

并且您的OrderDetails应更改如下

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; }
}

并且您的Album类应该有一个OrderDetails虚拟列表。

最后在你的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);
        }


    }

试试这可能是你的异常原因