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 .....................}
答案 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行。如何提高绩效?