【发布时间】:2025-11-27 15:20:06
【问题描述】:
在尝试获取特定帖子的 cmets 时遇到了一些障碍。使用 MVC 3 和 VBNET。帖子 url 看起来像 /Blog/Post/1。我可以毫无问题地显示帖子,但需要从 Comments 表中获取 PostId=1 的 cmets。我尝试了一个 Linq 内连接语句
Dim results = From P In _rdsqlconn.Posts Where P.PostId = id Join c In _rdsqlconn.Comments On P.PostId Equals c.PostId Select P
Public Class RDSQLConn
Inherits DbContext
Public Sub New()
End Sub
Property Posts As DbSet(Of Post)
Property Categories As DbSet(Of Category)
Property Comments As DbSet(Of Comment)
End Class
但这会引发:
`Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[RiderDesignMvcBlog.Core.Entities.Post]' to type 'RiderDesignMvcBlog.Core.Entities.Post'.`
但是,如下所示的 SQL 查询可以正常工作。我可以将这个 sql 语句传递给我的 EF 吗?
Select * From Posts INNER JOIN Comments on dbo.Posts.PostId = Comments.PostId where dbo.Posts.PostId = 1
【问题讨论】:
-
为什么要手动执行join?如果您的帖子使用导航属性正确映射到评论,您可以使用即时加载 (
Include) 方法来加载 cmets。 -
@LadislavMrnka,导航属性是否仅在我有 edmx 文件时才有效?我只有我的实体和 DBContext 类。
-
嗨阿肖克。有一阵子了。我假设您同时发现了导航属性、流畅的映射和其他东西?
标签: sql-server asp.net-mvc vb.net entity-framework