C# DbSet<;张力>;,IQueryable<;张力>;-面向对象的概念 公共接口IDepartmentDataSource { IQueryable部门{get;} } 公共类DepartmentDb:DbContext,IDepartmentDataSource { //错误:属性无法实现属性。。。。 公共数据库集部门{get;set;} //应该是: //公共可查询部门{get;set;} }
(使用Pluralsight中的代码) 从MSDN: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
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; }
}
}