使用EF 5 Context.Database.SqlQuery加载相关实体

时间:2013-02-10 11:54:55

标签: sql asp.net-mvc entity-framework entity-framework-5

我有这个SP,

ALTER PROCEDURE [dbo].[GetPageByID]
(
    @ID INT
)
AS

    SELECT  P.*
            ,A.*
    FROM    Page P
            LEFT OUTER JOIN [dbo].[Application] A ON P.ApplicationVersion = A.[Version]
    WHERE   P.ID = @ID;

我正在使用此代码加载到对象中,

        return context.Database.SqlQuery<Page>(@"EXEC GetPageByID {0}", new object[] { id }).FirstOrDefault();

这只加载Page的属性,但不加载Page.Application属性。告诉EF这样做的任何方式。

1 个答案:

答案 0 :(得分:2)

没有。 SqlQuery只能加载您要求的主要实体 - 在您的情况下为Page。如果您还想加载儿童,则无法使用SqlQuery。带有EDMX的EF5为stored procedures with multiple result sets提供映射(这意味着您将需要具有两个查询的存储过程 - 一个用于页面,第二个用于应用程序)。首先不支持代码。