C# MVC Linq中的关系数据库问题

C# MVC Linq中的关系数据库问题,c#,asp.net-mvc-2,linq-to-entities,C#,Asp.net Mvc 2,Linq To Entities,我希望有人能告诉我这里出了什么问题。我有三张桌子,LU_LOC_,ListingMessages 列表包含以下列 身份证 郊区(来自鲁鲁鲁郊区) 更多 ListingMessages包含以下列 身份证 ListingID(来自列表) 更多 我正在尝试创建一个消息页面,在该页面中,我首先获取用户的所有消息 IQueryable<ListingMessage> Messages = from x in DBEntities.ListingMessageSet.Include("Li

我希望有人能告诉我这里出了什么问题。我有三张桌子,LU_LOC_,ListingMessages


列表包含以下列

身份证

郊区(来自鲁鲁鲁郊区)

更多


ListingMessages包含以下列

身份证

ListingID(来自列表)

更多


我正在尝试创建一个消息页面,在该页面中,我首先获取用户的所有消息

IQueryable<ListingMessage> Messages = from x in DBEntities.ListingMessageSet.Include("Listings")
                                      where x.Listings.Users.ID == UserID
                                      select x;
然后我将其发送到一个视图,我们将其命名为“Messages for Listing”。

在我的视图页面中,我想把郊区的名字写在屏幕上,我可以通过它来完成

<%= Html.Encode(item.Listings.LU_LOC_Suburb.Name) %>

现在问题来了

当我没有通过列表限制消息时(在用户消息视图中),会出现错误-对象引用未设置为对象实例。当我通过列表限制消息时,我没有得到这个错误

我不明白为什么会这样。我知道这很简单,希望你们能帮我解决这个问题

提前感谢,


Sheefy

可能是您没有在消息查询中“包括”列表吗?

您可能知道,也可能不知道,
IQueryable
是实际查询的“惰性”表示。直到枚举结束,它才被执行。从您的代码示例中,似乎您正在将
IQueryable
直接发送到您的视图。不确定这是否是“错误的”,但我始终确保查询在控制器中实际执行。在将ToList()添加到ViewModel(或ViewData)时,可以通过向语句中添加ToList()来完成此操作


我并不是说这将解决您的问题,但它将使调试更加容易

谢谢你的回复。一切都源于包含清单的初始查询。我能够阅读不同的列表-问题是,当我没有通过特定列表限制消息时,我无法阅读LU_LOC_郊区表(该表在列表表中引用)。因此,第一个查询(按用户)不允许我读取Listings表中引用的LU_LOC_郊区列,但第二个查询(我从第一个查询中获取结果,并通过ListngID进一步限制它们)允许我读取Listings表中引用的LU_LOC_郊区列。我尝试了一下,但没有运气。当调用Listings结果到视图时,它似乎正在填充,但是,与Listings表相关的所有表都是空的。
<%= Html.Encode(item.Listings.LU_LOC_Suburb.Name) %>