有一个存储过程,同时查询三张表,如果将查询结果存到三个不同的实体类中去?
三个实体类的名称分别是:
X_CMS_Node
X_CMS_Info
X_CMS_Info_Base
非常感谢。/****** Object:  StoredProcedure [dbo].[X_Test_Read]    Script Date: 11/12/2012 15:03:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[X_Test_Read]
@PageSize INT = 10
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT TOP (@PageSize) 
[Extent1].[pkID] AS [pkID], 
[Extent1].[ModeID] AS [ModeID], 
[Extent1].[ModelID] AS [ModelID], 
[Extent1].[NodeID] AS [NodeID], 
[Extent1].[SortID] AS [SortID], 
[Extent1].[Title] AS [Title], 
[Extent1].[AuthorID] AS [AuthorID], 
[Extent1].[Author] AS [Author], 
[Extent1].[DraftID] AS [DraftID], 
[Extent1].[Draft] AS [Draft], 
[Extent1].[EditorID] AS [EditorID], 
[Extent1].[Editor] AS [Editor], 
[Extent1].[PassID] AS [PassID], 
[Extent1].[Pass] AS [Pass], 
[Extent1].[PublishID] AS [PublishID], 
[Extent1].[Publish] AS [Publish], 
[Extent1].[Click] AS [Click], 
[Extent1].[ClickView] AS [ClickView], 
[Extent1].[ClickTime] AS [ClickTime], 
[Extent1].[DateTime] AS [DateTime], 
[Extent1].[DateTimeComment] AS [DateTimeComment], 
[Extent1].[flagSubmit] AS [flagSubmit], 
[Extent1].[flagPass] AS [flagPass], 
[Extent1].[flagPublish] AS [flagPublish], 
[Extent1].[flagPublishDate] AS [flagPublishDate], 
[Extent1].[flagStatus] AS [flagStatus], 
[Extent2].[pkID] AS [pkID1], 
[Extent2].[SiteID] AS [SiteID], 
[Extent2].[ModeID] AS [ModeID1], 
[Extent2].[ModelID] AS [ModelID1], 
[Extent2].[SortID] AS [SortID1], 
[Extent2].[ParentID] AS [ParentID], 
[Extent2].[LevelID] AS [LevelID], 
[Extent2].[Name] AS [Name], 
[Extent2].[NameAS] AS [NameAS], 
[Extent2].[Code] AS [Code], 
[Extent2].[Type] AS [Type], 
[Extent2].[Tag] AS [Tag], 
[Extent2].[Folder] AS [Folder], 
[Extent2].[Url] AS [Url], 
[Extent2].[Keyword] AS [Keyword], 
[Extent2].[Memo] AS [Memo], 
[Extent2].[Icon] AS [Icon], 
[Extent2].[Photo] AS [Photo], 
[Extent2].[Click] AS [Click1], 
[Extent2].[ClickView] AS [ClickView1], 
[Extent2].[ClickTime] AS [ClickTime1], 
[Extent2].[flagStatus] AS [flagStatus1], 
[Extent3].[pkID] AS [pkID2], 
[Extent3].[InfoID] AS [InfoID], 
[Extent3].[TitleSub] AS [TitleSub], 
[Extent3].[TitleCustom] AS [TitleCustom], 
[Extent3].[TitlePhoto] AS [TitlePhoto], 
[Extent3].[TitleStyle] AS [TitleStyle], 
[Extent3].[Text] AS [Text], 
[Extent3].[Summary] AS [Summary], 
[Extent3].[Pager] AS [Pager], 
[Extent3].[Keyword] AS [Keyword1], 
[Extent3].[Tag] AS [Tag1], 
[Extent3].[Alert] AS [Alert], 
[Extent3].[Source] AS [Source], 
[Extent3].[SourceID] AS [SourceID], 
[Extent3].[SourceUrl] AS [SourceUrl], 
[Extent3].[PhotoGuide] AS [PhotoGuide], 
[Extent3].[PhotoDefault] AS [PhotoDefault], 
[Extent3].[PhotoList] AS [PhotoList], 
[Extent3].[VideoList] AS [VideoList], 
[Extent3].[AudioList] AS [AudioList], 
[Extent3].[DocList] AS [DocList], 
[Extent3].[FileList] AS [FileList], 
[Extent3].[TemplateFile] AS [TemplateFile], 
[Extent3].[Html] AS [Html], 
[Extent3].[Url] AS [Url1], 
[Extent3].[PassWord] AS [PassWord], 
[Extent3].[flagStatus] AS [flagStatus2]
FROM   [dbo].[X_CMS_Info] AS [Extent1]
LEFT OUTER JOIN [dbo].[X_CMS_Node] AS [Extent2] ON [Extent1].[NodeID] = [Extent2].[pkID]
LEFT OUTER JOIN [dbo].[X_CMS_Info_Base] AS [Extent3] ON [Extent1].[pkID] = [Extent3].[InfoID]
ORDER BY [Extent1].[SortID] DESC, [Extent1].[pkID] DESC
END

解决方案 »

  1.   

    sqlserver不是可以同时返回多张表的么?
      

  2.   

    把查询的结果存放在DataTable对象 dt中 
    对这三个类  需要的数据 直接从dt中取
    例如:
    string Extent1.pkID =dt.Rows[0]["pkID"];//将第一行的PKID列的值赋给字符串
    如果是很多数据的话  需要存放在一个 DataTable 中 需要用到循环
    DataTable dtExtent1 =new DataTable();
    foreach(DataRow dr in dt.Rows)
    {
         DataRow newRow=dtExtent1.NewRow();
         newRow["pkID"]=dr["pkID"].ToString();
         dtExtent1.Rows.Add(newRow);
    }
    上面的步骤就是把你需要的数据 分别存放在一个表中
    三个类可以创建3个表 每个类对应一个表 存放对应的数据
      不知道 这样给你提示没有
      

  3.   

    cmd.CommandText = procName;
    cmd.CommandType = CommandType.StoredProcedure;
    foreach (SqlParameter pa in parameters)
    {
       cmd.Parameters.Add(pa);
    }
    DataSet ds = new DataSet();
    SqlDataAdapter dp = new SqlDataAdapter(cmd);                    
    dp.Fill(ds);若你的存储过程中查询3个表,SqlDataAdapter 会自动出现3个表在dataset中