ef仅在基类中获取字段

时间:2013-05-28 07:37:18

标签: entity-framework poco base-class

public class baseEntity
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }
}


public class ProjectEntity : baseEntity
{
    public string Address { get; set; }
    public string PhoneNo { get; set; }
}


public class ProcessEntity : baseEntity
{
    public string TypeName { get; set; }
    public int Steps { get; set; }
}

public class DBContext : DbContext
{
    public DBContext() : base("DefaultConnection") 
    {

    }
    public DbSet<baseEntity> BaseEntities { get; set; }

}

DBContext db = new DBContext();
var list = from p in db.BaseEntities select p

这将从baseentity获取所有字段。无论是BaseEntity,ProcessEntity还是ProjectEntity。

我想只在BaseEntity中获取字段(仅ID,名称),我该怎么办?

var list = from p in db.BaseEntities select new {p.ID,p.Name}

这不是我想要的。因为我的项目中有很多字段。我不喜欢写这样的代码

var list = from p in db.BaseEntities select new {p.ID,p.Name,p.xxx .....................}

2 个答案:

答案 0 :(得分:0)

尝试:

var list = from p in db.BaseEntities.OfType<baseEntity>() select p

但是,请记住,要生成的实际Sql查询取决于您的Inheritance Strategy(TPT / TPH / TPC)。

答案 1 :(得分:0)

ofType可以完成这项工作。谢谢。但是还有更多的Fields和更多的继承类将添加到这个项目中。

var list = from p in db.BaseEntities.OfType<baseEntity>() select p

会生成一个非常复杂的sql。我尝试使用list.toString()获取sql并复制到SQL Server Management Studio,内容超过8000行。如何提高绩效?