C# DbSet<;张力>;,IQueryable<;张力>;-面向对象的概念 公共接口IDepartmentDataSource { IQueryable部门{get;} } 公共类DepartmentDb:DbContext,IDepartmentDataSource { //错误:属性无法实现属性。。。。 公共数据库集部门{get;set;} //应该是: //公共可查询部门{get;set;} }

C# DbSet<;张力>;,IQueryable<;张力>;-面向对象的概念 公共接口IDepartmentDataSource { IQueryable部门{get;} } 公共类DepartmentDb:DbContext,IDepartmentDataSource { //错误:属性无法实现属性。。。。 公共数据库集部门{get;set;} //应该是: //公共可查询部门{get;set;} },c#,asp.net,oop,iqueryable,dbset,C#,Asp.net,Oop,Iqueryable,Dbset,(使用Pluralsight中的代码) 从MSDN: public interface IDepartmentDataSource { IQueryable<Department> Departments { get; } } public class DepartmentDb : DbContext, IDepartmentDataSource { //Error: property cannot implement property.... publ

(使用Pluralsight中的代码)

从MSDN:

public interface IDepartmentDataSource
{
    IQueryable<Department> Departments { get; }
}

public class DepartmentDb : DbContext, IDepartmentDataSource 
{
    //Error: property cannot implement property.... 
    public DbSet<Department> Departments { get; set; } 


    //should be: 
    //public IQueryable<Department> Departments { get; set; }
}
公共类DbSet:DbQuery,
IDbSet、IQueryable、IEnumerable、,
可数的,可数的
地点:班级
为什么我必须具体实现为IQueryable?

公共类DepartmentDb:DbContext,IDepartmentDataSource
public class DbSet<TEntity> : DbQuery<TEntity>, 
IDbSet<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, 
IQueryable, IEnumerable 
where TEntity : class
{ //错误:属性无法实现属性。。。。 公共数据库集部门{get;set;} } 公共类MyQueryable:IQueryable{} .... MyDepartmentDb.Departments=新建MyQueryable();//错误! //但它实现了IDepartmentDataSource //哪一个应该让任何IQueryable进来,那么什么给??
因为上面的代码不起作用,但应该起作用。i、 e.您应该能够将任何
IQueryable
分配给
Departments
属性,而不仅仅是
DbSet

公共类DepartmentDb:DbContext,IDepartmentDataSource
{
公共数据库集部门{get;set;}
IQueryable iDPartmentDataSource.Departments
{
获取{返回部门;}
}
}

您应该从接口类中显式设置
DbSet
IDepartmentDataSource

没有解释为什么必须显式设置,但这是正确的方法。
public class DepartmentDb : DbContext, IDepartmentDataSource 
{
    //Error: property cannot implement property.... 
    public DbSet<Department> Departments { get; set; } 
}

public class MyQueryable<T> : IQueryable<T> {}

....

MyDepartmentDb.Departments = new MyQueryable<Department>(); // Error!
// but it implements IDepartmentDataSource
// which should let any IQueryable<Department> in, so what gives??
public class DepartmentDb : DbContext, IDepartmentDataSource
{
    public DbSet<Department> Departments { get; set; }

    IQueryable<Department> IDepartmentDataSource.Departments
    {
        get { return Departments; }
    }
}