Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 我可以使用EF从另一个表中提取值而不定义新实体吗?_Entity Framework - Fatal编程技术网

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
,以正确地持久化
作业(它不知道视图是如何创建的)