无法将System.Data.Entity.DbSet类型转换为System.Collections.Generic.ICollection

时间:2011-11-10 06:20:01

标签: asp.net-mvc-3 entity-framework entity-framework-4 entity-framework-4.1

我在Entity Framework 4.1 code first应用中使用MVC 3

我有以下存储库:

public class BankRepository : IBankRepository
{
     HefContext db = new HefContext();

     public ICollection<Bank> GetAll()
     {
          return db.Banks;
     }
}

返回db.Banks时出错。我不确定这意味着什么,有人可以帮助澄清以及如何更改它以便错误消失吗?错误是:

Cannot implicitly convert type 'System.Data.Entity.DbSet<MyProject.Core.DomainObjects.Bank>' to 'System.Collections.Generic.ICollection<MyProject.Core.DomainObjects.Bank>'. An explicit conversion exists (are you missing a cast?)

db.Banks返回了什么?一个IEnumerable?

2 个答案:

答案 0 :(得分:4)

db.Banks的类型为DbSet。该类未实现ICollection接口。将方法的返回类型更改为IQueryable<Bank>IEnumerable<Bank>

public class BankRepository : IBankRepository
{
     HefContext db = new HefContext();

     public IQueryable<Bank> GetAll()
     {
          return db.Banks;
     }
}

答案 1 :(得分:2)

ICollection仅用作支持LazyLoading的支持属性,而不是作为方法的结果。检查here;)