, 그가에서지도를 누락 AutomapperIGrouping`2에서 ModelName으로 누락 된지도가있는 여러 개의 키가있는 GroupBy에 오류가 있습니다. Mapper.CreateMap를 사용하여 만들기 <IGrouping`2, MODELNAME>
를 사용하여, 두 가지 속성에 의해 그룹화 IGrouping`2를 PlayerWarScore에 추가합니다. Mapper.CreateMap < IGrouping`2를 사용하여 만들기, PlayerWarScore>
PlayerWar
이 Score
Mapper.CreateMap<IGrouping<PlayerWar, Score>, PlayerWarScore>
.ForMember(model => model.PlayerName, model => model.MapFrom(grouping => grouping.Key.Player.Name))
.ForMember(model => model.WarName, model => model.MapFrom(grouping => grouping.Key.War.Name)),
.ForMember(model => model.Score, model => model.MapFrom(grouping => grouping.Sum(score => score.Score));
의 엔티티 속성입니다하지만 PlayerWar
이되지 않을 때 나는 현재 잘 작동이 같은 무언가를 시도하고있다 엔티티하지만, 방금 만든 모델은 내가 노력하고있어, 예를 들어 오류
public class PlayerWar
{
public Player Player { get; set; }
public War War { get; set; }
}
를 얻을, 아래 두 개의 엔티티로 만든 결합 된 키를 잡아 다음 EF6 엔티티가 주어지면 달성 할 수 있습니다.
public class Score
{
public Player Player { get; set; }
public Battle Battle { get; set; }
public int Score { get; set; }
}
public class Player
{
public string Name { get; set; }
}
public class Battle
{
public string Name { get; set; }
public War War { get; set; }
}
public class War
{
public string Name { get; set; }
}
내가 어떻게 Automapper의 Project().To<PlayerWarScore>()
를 사용하여 다음 쿼리를 달성 할
public class PlayerWarScore
{
public string PlayerName { get; set; }
public string WarName { get; set; }
public int Score { get; set; }
}
에 투영하고자하는 다른 모델?
context.Scores
.GroupBy(score => new {score.Player, score.Battle.War})
.Select(grouping => new PlayerWarScore {
PlayerName = grouping.Key.Player.Name,
WarName = grouping.Key.War.Name,
Score = grouping.Sum(score => score.Score)
})
.ToList()
잘못된 방식으로 접근하고 있거나 간단한 Linq 기능이 없다는 느낌이 들었습니다. 조합 된 키 모델과 어둠 속의 다른 샷에 대한 엔티티 매핑을 포함하여 시도했지만, 지금까지는 행운이 없었습니다.
감사합니다,하지만 난 익명 형식을 사용하지 않는 , 나는 당신이 보여준 것을하고있다. (Project()를 제외하고,()에) 그리고 에러가 발생한다. –
Klors
@Klors You *는 익명의 타입을 사용하고있다 :'new {score.Player, score.Battle .War}'. –
글쎄, 게시 한 코드 조각 * 익명 형식, 따라서 대답을 사용합니다. 나는 (AutoMapper v5.2.0과 함께) 게시하기 전에 나의 대답을 테스트했고 작동한다. 'new PlayerWar {...} '를'new {...}'로 변경하면, 당신이 말하는 예외가 생깁니다. –