我是EF
的新手,我認爲有時候更容易犧牲ORM的優勢。但我想知道是否有方法使用EF4
來執行此查詢。實體框架4困難的查詢與未映射的屬性
我有datawarehouse事實表。映射看起來像
public class GameResult
{
[Key]
public int GameResultId { get; set; }
public virtual Competition Competition { get; set; }
public virtual CustomDate DateGame { get; set; }
public virtual Contender ContenderFirst { get; set; }
public virtual Contender ContenderSecond { get; set; }
public virtual Location Location { get; set; }
public int ScoreContenderFirst { get; set; }
public int ScoreContenderSecond { get; set; }
public int PrizeStock { get; set; }
public int Budget { get; set; }
[NotMapped]
public int WinCount { get; set; }
[NotMapped]
public int FailCount { get; set; }
[NotMapped]
public int DeadHeatCount { get; set; }
[NotMapped]
public int CountGames { get; set; }
}
和查詢上sql
select
Contenders.Name,
sum((Case
when (ScoreContenderFirst > ScoreContenderSecond) then 1
else 0
end)) as wins,
sum ((Case
when (ScoreContenderFirst = ScoreContenderSecond) then 1
else 0
end)) as equals,
sum((Case
when (ScoreContenderFirst < ScoreContenderSecond) then 1
else 0
end)) as fail,
COUNT(GameResults.GameResultId)as countGames
from GameResults
inner join Contenders
on GameResults.ContenderSecond_ContenderId = Contenders.ContenderId
where GameResults.ContenderFirst_ContenderId = 42
group by Contenders.Name
UNION
select
Contenders.Name,
sum((Case
when (ScoreContenderFirst < ScoreContenderSecond) then 1
else 0
end)) as wins,
sum ((Case
when (ScoreContenderFirst = ScoreContenderSecond) then 1
else 0
end)) as equals,
sum((Case
when (ScoreContenderFirst > ScoreContenderSecond) then 1
else 0
end)) as fail,
COUNT(GameResults.GameResultId)as countGames
from GameResults
inner join Contenders
on GameResults.ContenderFirst_ContenderId = Contenders.ContenderId
where GameResults.ContenderSecond_ContenderId = 42
group by Contenders.Name
這sql
查詢手段(我希望得到一個特定的球隊與其他球隊的比賽結果(一些遊戲,特定隊是冠軍,以及特定隊伍放鬆的比賽數量))
也許你能解釋一下你的SQL請求返回,即什麼是它的目標。 – ken2k
爲什麼您將聚合結果存儲在每個單獨的對象中,而不是存儲在不屬於EF模型的另一個特定結果類中? –
@GertArnold我找到兩種方法http://stackoverflow.com/questions/1987836/creating-a-non-mapped-property-in-an-entity-entity-framework和http://stackoverflow.com/questions/5155853 /添加-附加屬性到一個實體框架-4-代碼優先-CTP -5-實體。 ANd決定爲什麼不將彙總結果保存爲[未映射]對象。請提供您的解決方案 – Ray