实体框架表主键

时间:2013-03-14 08:37:30

标签: c# asp.net entity-framework

这是我的表

信息 enter image description here

enter image description here

这是我的Gridview来源

<asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                    CommandName="Select" Text="Select"></asp:LinkButton>
                <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
                    CommandName="Delete" Text="Delete"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="RecipientID" SortExpression="Person.LastName">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("Person.LastName") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Subject" HeaderText="Subject" 
            SortExpression="Subject" />
        <asp:BoundField DataField="Message1" HeaderText="Message" 
            SortExpression="Message1" />
        <asp:BoundField DataField="Status" HeaderText="Status" 
            SortExpression="Status" />
        <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
        <asp:TemplateField HeaderText="SenderID" SortExpression="Person.LastName">
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Person.LastName") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

这是结果 enter image description here

你能帮助我显示发件人的名字吗? :)提前谢谢你们!我正在使用实体数据源

更新

我以“用户卡罗”身份登录

enter image description here

发件人显示登录的用户而非消息表

中的真实发件人

这是我的实体模型

enter image description here

2 个答案:

答案 0 :(得分:1)

您已经拥有了所需的导航属性,但是他们的名字掩盖了他们的角色。您使用Message.Person来获取发件人的姓名,同样可以使用Message.Person1来获取收件人的姓名。

我会将属性PersonPerson1分别重命名为SenderRecipient。因此,它们匹配原始外键名SenderIDRecipientID。同样,您可以将Person.Messages属性重命名为MessagesSentMessagesReceived

在模板中,您可以使用Sender.LastNameRecipient.LastName

答案 1 :(得分:0)

使用此查询

select m.MessageID,m.ReceipientID,m.Subject,m.senderID,p.UserName,p.FirseName from Message m inner join Person p on m.SenderID= p.ID