gpt4 book ai didi

c# - Entity Framework 和 View

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:47 26 4
gpt4 key购买 nike

我想为 View 创建参照完整性。我知道这在数据库中是不可能的,但使用 EF 我正在寻找一种方法来实现这一目标。

情况是这样的:

View (vSkillMatch ) 包含三列:jobid、matchingskillid、candidateid。

这些分别来自JobDescriptionSkillInfoCandidate 表。

我想从我的 web api 返回以下字段:

职位,工作地点,候选人姓名,手机号码,匹配技能名称

这些字段在各自的表格中可用。

目前我是这样做的:

网络接口(interface)方式

public List<CandidateBySkillDTO> getCandidate() 
{
var SkillMatches = db.vSkillMatches;

List<CandidateBySkillDTO> cbsDTO = new List<CandidateBySkillDTO>();

foreach (vSkillMatch Match in SkillMatches)
{
CandidateSkillDTO CandidateSkillInfo = new CandidateSkillDTO(Match.CandidateId, Match.SkillId);

CandidateBySkillDTO candidateList = new CandidateBySkillDTO();

candidateList.candidateId = CandidateSkillInfo.candidateInfo.Id;
candidateList.candidateMobile = CandidateSkillInfo.candidateInfo.PrimaryMobile;
candidateList.SkillName = CandidateSkillInfo.skillInfo.SkillName;

cbsDTO.Add(candidateList);
}

return cbsDTO;

}

CandidateBySkillDTO 模型类

public class CandidateBySkillDTO
{
public int candidateId { get; set; }
public string candidateName { get; set; }
public long candidateMobile { get; set; }
public string createdBy { get; set; }
public string SkillName { get; set; }
public int skillId { get; set; }
public string jobTitle { get; set; }
public string jobCreated { get; set; }

}

CandidateSkillDTO 模型类

public class CandidateSkillDTO
{
ubietydbEntities db = new ubietydbEntities();

public int candidateId;
public int skillId;

public CandidateSkillDTO(int CandidateId, int SkillId)
{
this.candidateId = CandidateId;
this.skillId = SkillId;
}

public Candidate candidateInfo
{
get
{
return db.Candidates.Find(this.candidateId);
}

set
{

}
}

public Skill skillInfo
{
get
{
return db.Skills.Find(this.skillId);
}
set
{

}
}
}

我觉得我的要求不是很适合我的项目。这是完成任务的唯一方法,还是我缺少 EF 的主要功能来执行此任务?

谢谢。

最佳答案

整个事情可以在一个单一的数据库查询中完成(因此可能更快):

public List<CandidateBySkillDTO> getCandidate() 
{
return db
.vSkillMatches
.Select(e => new
{
candidateInfo = db.Candidates.FirstOrDefault( c => c.Id == e.candidateId),
skillInfo = db.Skills.FirstOrDefault(s => s.Id == e.skillId)
})
.Select(e => new CandidateBySkillDTO
{
candidateId = e.candidateInfo.Id,
candidateMobile = e.candidateInfo.PrimaryMobile,
SkillName = e.skillInfo.SkillName
})
.ToList();
}

关于c# - Entity Framework 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com