【问题标题】:Entity Framework returning different data then DB query实体框架返回不同的数据然后数据库查询
【发布时间】:2011-01-04 20:59:05
【问题描述】:

我对我的数据库中的一些数据有一个视图,它会返回我所期望的数据,例如

Call Date    To     From   Phone Number
20/1/2010    00:00  23:59  08923233223
20/1/2010    00:00  23:59  08923233245

但是,当我将它添加到我的实体模型并查询它时,我会出现重复(和意外)数据

Call Date    To     From   Phone Number
20/1/2010    00:00  23:59  08923233223
20/1/2010    00:00  23:59  08923233223

我只是将实体数据源绑定到该实体,但对于为什么返回的数据不同

编辑:有趣的是,这不可能是某些奇怪的幕后连接的结果,因为行数符合预期。我自己也整理了一个查询,以测试相同的奇怪结果

From o In App.Entities.v_PersonalRules Where o.companyid = CompanyID Select o

我正在使用 Visual Studio 2010、.NET 4

有没有人遇到过类似的问题?

编辑:前端代码相当简单

  <asp:EntityDataSource ID="EDS_Personal" runat="server" ConnectionString="name=Entities_NEW"
                                    DefaultContainerName="Entities_NEW" EnableDelete="True" EnableInsert="False"
                                    EnableUpdate="True" EntitySetName="v_PersonalRules" EntityTypeFilter="v_PersonalRules" >
                                </asp:EntityDataSource>

这是下面gridview的数据源

<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" DataSourceID="EDS_Personal"
                                    EnableModelValidation="True" AllowPaging="True" AllowSorting="True" CssClass="nice_table" PagerStyle-CssClass="cssPager" AutoGenerateDeleteButton="true" AutoGenerateEditButton="true" >
                                    <Columns>
                                          <asp:CommandField ButtonType ="Link" EditText="Edit" ShowEditButton="true" />
                                          <asp:BoundField DataField="billdate" HeaderText="Bill Date" SortExpression="billdate" DataFormatString="{0:dd-MM-yyyy}"  />
                                          <asp:BoundField DataField="starttime" HeaderText="From" SortExpression="starttime" DataFormatString="{0:t}"/>
                                          <asp:BoundField DataField="endtime" HeaderText="To" SortExpression="endtime" DataFormatString="{0:t}" />
                                          <asp:BoundField DataField="description" HeaderText="Type" SortExpression="description" />
                                          <asp:BoundField DataField="HSNumber" HeaderText="Calls From" SortExpression="HSNumber" />
                                          <asp:BoundField DataField="uid" HeaderText="uid" SortExpression="uid" visible="true"/>
                                          <asp:BoundField DataField="dialledNo" HeaderText="Calls To" SortExpression="dialledNo" />
                                          <asp:BoundField DataField="companyid" HeaderText="Company ID" SortExpression="companyid" />

                                    </Columns>
                                </asp:GridView>

【问题讨论】:

    标签: vb.net entity-framework


    【解决方案1】:

    我现在已经解决了这个问题....问题是由于列出的问题而出现的 here。添加正确的实体密钥解决了这个问题

    【讨论】:

    • 谢谢,我今天遇到了同样的问题,在您的帮助下解决了。
    • 我还发现了一个解决方法,该解决方法发布在 Dean 指出的解决方案中
    【解决方案2】:

    您应该做的第一件事是捕获(使用分析器)从 EF 发送到服务器的 sql;然后将其粘贴到查询分析器中,然后查看手动运行时返回的结果......这将告诉您它是客户端/前端问题还是服务器问题。 (我怀疑是前端)。

    【讨论】:

    • 您有如何执行此操作的指南吗?
    • 我假设您使用的是 sql server?如果是这样,所有这些事情都可以在 Management Studio 中完成。
    • 我设法得到了 EF 生成的 SQL,它按预期返回了数据??这让我完全被难住了!
    • 你能贴出你的前端代码吗? (现在您似乎已经消除了服务器从坏 sql 返回坏数据的可能性)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多