Entity framework 我可以使用EF从另一个表中提取值而不定义新实体吗?
我有两张工作表和工作组。乔布斯看起来像这样:Entity framework 我可以使用EF从另一个表中提取值而不定义新实体吗?,entity-framework,Entity Framework,我有两张工作表和工作组。乔布斯看起来像这样: int Id (PK) varchar(30) Description int GroupId (FK) 工作组看起来像这样 int Id (PK) varchar(30) GroupName 我所知道的使用EF和fluent api对此进行映射的唯一方法是定义以下类: public class Job { public int Id {get; set;} public string Description {get; set
int Id (PK)
varchar(30) Description
int GroupId (FK)
工作组看起来像这样
int Id (PK)
varchar(30) GroupName
我所知道的使用EF和fluent api对此进行映射的唯一方法是定义以下类:
public class Job
{
public int Id {get; set;}
public string Description {get; set;}
public int GroupId {get; set;}
public JobGroup Group {get; set;}
//what I would rather see is this
public string GroupName {get; set;}
}
public class JobGroup
{
public int Id {get; set;}
public string Name {get; set;}
}
modelBuilder.Entity<Job>().HasKey(j => j.Id).HasRequired(j => j.JobGroup).WithMany();
公共类作业
{
公共int Id{get;set;}
公共字符串说明{get;set;}
public int GroupId{get;set;}
公共作业组{get;set;}
//我宁愿看到的是这个
公共字符串组名{get;set;}
}
公共职业组
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
modelBuilder.Entity().HasKey(j=>j.Id).HasRequired(j=>j.JobGroup).WithMany();
但是,我只需要作业组名称。有没有什么方法可以简单地从JobGroups表中提取名称,而不必使用JobGroup类?几乎与实体拆分类似,只是JobGroups表中不存在作业Id
谢谢您的帮助。否-实体框架与实体一起工作,实体必须被映射-映射告诉EF如何生成SQL查询数据库。若要从未映射表中获取某些列,必须编写自己的SQL 如果要直接使用
JobGroup.Name
而不是JobGroupId
映射Job
,则必须创建一个数据库视图,因为这种映射的结果不是一个实体-它是一个投影,EF代码中唯一可用的映射投影首先是数据库视图。这种投影也是只读的,因为EF不知道如何获取JobGroup
的Id
,以正确地持久化作业(它不知道视图是如何创建的)