0
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,Name),我该怎么办?

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 .....................}
4

2 回答 2

0

尝试:

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

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

于 2013-05-28T09:15:33.053 回答
0

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

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

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

于 2013-05-29T06:53:53.753 回答