エラー
Unable to cast the type 'System.Nullable`1' to type 'System.Object'.
LINQ to Entities only supports casting Entity Data Model primitive types.
これは私が得ているエラーです。
コントローラ-
public ActionResult FixturesAll()
{
teamMgr = new TeamManager();
fixtureMgr = new FixtureManager();
var team = teamMgr.GetTeams();
var viewModel = new TeamIndexViewModel()
{
Teams = team.ToList(),
NumberOfTeams = team.Count()
};
var fixtures = from fixtures in Oritia_entities.Fixtures
where fixtures.SeasonId == seasionID
select new FixtureModel
{
Team1 = "",
Team2 = "",
Winners = (fixtures.TeamWon+""),
FirstBattingTeam = (fixtures.FirstBattingTeam+""),
SecondBattingTeam = (fixtures.SecondBattingTeam+""),
Team1Score = fixtures.Team1Score + "",
Team1Wickets = fixtures.Team1Wickets + "",
Team2Score = fixtures.Team2Score + "",
Team2Wickets = fixtures.Team2Wickets + ""
};
ViewData["Fixtures"] = fixtures;
return View(viewModel);
}
部分図
<%@ Control Language="C#" Inherits=
"System.Web.Mvc.ViewUserControl<IEnumerable<DataAccess.FixtureModel>>" %>
<table>
<% foreach (var item in ViewData["Fixtures"]
as IEnumerable<DataAccess.FixtureModel>) // Here I am getting the error
{ %>
<tr>
<td>
<%: item.Team1 %>
</td>
<td>
<%: item.Team2 %>
</td>
</tr>
</table>
意見
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<FunBox.ViewModels.TeamIndexViewModel>" %>
<ul>
<% foreach (string team in Model.Teams)
{ %>
<li><a href="<%: team.ToString() %>/">
<%: team.ToString() %></a> </li>
<% } %>
</ul>
<div>
<% Html.RenderPartial("FixturesAll",ViewData["Fixtures"]); %>
</div>
複雑なクラス
public class TeamIndexViewModel
{
public int NumberOfTeams { get; set; }
public List<String> Teams { get; set; }
}
public class FixtureModel
{
public string Team1 { get; set; }
public string Team2 { get; set; }
public string Winners { get; set; }
public string Team1Score { get; set; }
public string Team1Wickets { get; set; }
public string Team2Score { get; set; }
public string Team2Wickets { get; set; }
public string FirstBattingTeam { get; set; }
public string SecondBattingTeam { get; set; }
}
sp_help フィクスチャの出力
Id bigint (pk)
TeamID1 bigint
TeamID2 bigint
TeamWon bigint
Date datetime
SeasonId bigint
ManOfTheMatch bigint
FirstBattingTeam bigint
SecondBattingTeam bigint
ResultDescription nvarchar
Team1Score bigint
Team2Score bigint
Team1Wickets bigint
Team2Wickets bigint
これは私の全体的な構造であり、上記のエラーが発生しています。グーグルで調べましたが、これに対する正確な解決策は得られませんでした。どんな助けでも大歓迎です。
私を助けてくれてありがとう、そしてアイデアを与えてくれたJon Skeetに特に感謝します
私の更新されたクエリを参照してください
var data = from fixtures in Oritia_entities.Fixtures
join t1 in Oritia_entities.Teams on new { ID = fixtures.TeamID1 } equals new { ID = t1.ID }
join t2 in Oritia_entities.Teams on new { ID = fixtures.TeamID2 } equals new { ID = t2.ID }
where fixtures.SeasonId == seasionID
select new FixtureModel
{
Team1 = t1.TeamName,
Team2 = t2.TeamName,
Winners = SqlFunctions.StringConvert((double)(fixtures.TeamWon ?? 1)),
FirstBattingTeam = SqlFunctions.StringConvert((double)(fixtures.FirstBattingTeam ?? 1)),
SecondBattingTeam = SqlFunctions.StringConvert((double)(fixtures.SecondBattingTeam ?? 1)),
Team1Score = SqlFunctions.StringConvert((double)(fixtures.Team1Score ?? 1)),
Team1Wickets = SqlFunctions.StringConvert((double)(fixtures.Team1Wickets ?? 1)),
Team2Score = SqlFunctions.StringConvert((double)(fixtures.Team2Score ?? 1)),
Team2Wickets = SqlFunctions.StringConvert((double)(fixtures.Team2Wickets ?? 1))
};
文字列への変換にSqlFunctions.StringConvertを使用しましたが、現在は機能しています。皆さんありがとう。