如何显示由id链接的一个sql表中的名称?

时间:2010-08-23 12:14:08

标签: sql-server asp.net-mvc linq

有点像mvc的新手。我遇到以下情况的问题:

我有以下观点:

        <tr>
        <% foreach (var game in (IEnumerable<Game>)ViewData["Game"])
           { %>
        <td>
            <input type="checkbox" name="selectedObjects" value="<%=game.Id%>" />
        </td>
        <td>
            <%=game.GMTDateTime%>
        </td>
        <td>
            <%=game.HomeTeamId%>                            
        </td>
        <td>
            <%=game.AwayTeamId%>
        </td>
        <td>
            <%=game.Venue%>
        </td>
        </tr>

除HomeId和AwayId外,所有数据都显示OK。这两个字段链接到另一个名为team的表,HomeTeamId和AwayTeamId中的每个Id都与Team表中的记录相关,每个id都有一个“Name”。我的问题是如何显示Team表中的“Name”而不是显示的Id字段。

控制器显示:

   ViewData["Game"] = dc.Games.GetGames();

我在linq中使用的查询是:

    public static IEnumerable<Game> GetGames(this Table<Game> source)
    {
        return from c in source
               orderby c.GMTDateTime
               select c;
    }

1 个答案:

答案 0 :(得分:2)

假设您已在模式中定义了关系,这应该可以工作:

    <td>
        <%=game.Team.Name%>                            
    </td>
    <td>
        <%=game.Team1.Name%>
    </td>

由于Team表中有多个FK,因此您将看到Team,TeamTeam1(或类似)的两个属性。您需要通过查看生成的LINQ代码或通过反复试验来确定哪个是哪个,即观察输出。

通常使用部分类我会创建其他属性,使用更好的名称公开Team对象,以明确它们所用的FK。