Entity Framework 데이터베이스를 처음 사용하는 프로젝트를 만듭니다. 현재 .edmx
이 생성되어 있으며 데이터 액세스 계층 프로젝트에 있습니다.저장 프로 시저를 사용하는 Entity Framework 데이터베이스의 첫 번째 접근 방식
GetAllTeam
함수 호출과 해당 복합 형식 호출 TeamResult
을 작성했습니다. 필자는 함수 가져 오기를 호출하여 데이터 액세스 계층에서 복잡한 유형을 채우는 방식으로 비즈니스 계층에 데이터를 반환하려고합니다.
내 비즈니스 계층에서 복잡한 유형을 비즈니스 객체에 매핑하고 내 웹 API로 돌아와야합니다. 내 접근 방식이 올바른지 알고 싶습니다. 팀이라는 클래스의 엔터티라고하는 별도의 클래스 프로젝트를 만들고 복합 클래스 TeamResult
을 사용하여 AutoMap을 만든 다음 비즈니스 계층으로 돌아가거나 TeamResult
을 비즈니스 계층에 직접 보내야합니다.
이 접근법에 다른 문제가 있는지 알고 싶습니다.
참조하십시오
데이터 액세스 레이어 아래 코드 :
public class TeamRepository
{
public IEnumerable<TeamResult> GetAllTeam()
{
using (var mcrContext = new MCREntities1())
{
return (from team in mcrContext.GetAllTeam()
select new TeamResult
{
TeamName = team.TeamName,
TeamDescription = team.TeamDescription,
Code = team.Code
}).ToList();
}
}
}
비즈니스 로직 계층 :
public class TeamService : ITeamService
{
private readonly ITeamRepository _teamRepository;
public TeamService(ITeamRepository teamRepository)
{
_teamRepository = teamRepository;
}
public IEnumerable<TeamDto> GetTeam()
{
IEnumerable<TeamResult> team = _teamRepository.GetAllTeam();
if (team != null)
{
foreach (var t in team)
{
yield return Mapper.Map<TeamDto>(t);
}
}
yield break;
}
}
public class DomainToDtoMapping : Profile
{
public DomainToDtoMapping()
{
CreateMap<TeamResult, TeamDto>().ReverseMap();
}
public override string ProfileName
{
get { return "DomainToDtoMapping"; }
}
}
웹 API :
public class TeamController : ApiController
{
private readonly ITeamService _teamServices;
public TeamController(ITeamService _teamServices)
{
_teamServices = teamServices;
}
public HttpResponseMessage Get()
{
var teams = _teamServices.GetTeam();
if (teams != null)
{
var teamEntities = teams as List<TeamDto> ?? teams.ToList();
if (teamEntities.Any())
return Request.CreateResponse(HttpStatusCode.OK, teamEntities);
}
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Team not found");
}
}