【问题标题】:Cannot convert type System.Data.Entity.DbSet to System.Collections.Generic.ICollection无法将类型 System.Data.Entity.DbSet 转换为 System.Collections.Generic.ICollection
【发布时间】:2016-09-28 22:35:22
【问题描述】:

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

我有以下存储库:

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?

【问题讨论】:

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


    【解决方案1】:

    db.Banks 的类型为 DbSet。这个类没有实现ICollection 接口。将方法的返回类型改为IQueryable&lt;Bank&gt;IEnumerable&lt;Bank&gt;

    public class BankRepository : IBankRepository
    {
         HefContext db = new HefContext();
    
         public IQueryable<Bank> GetAll()
         {
              return db.Banks;
         }
    }
    

    【讨论】:

    • 网上大部分例子都使用ICollection?这是为什么呢?
    • @Brendan 的情况在这些示例中必须有所不同,因为您的代码无法编译。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2013-12-13
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多