不知道問題出在哪裏......我有一個存儲過程寫入(當在SQL Server管理器中執行時)返回我期望的結果看到:SQL Server存儲過程返回正確的行數,但所有的行都是相同的
USE [DataViewer]
GO
/****** Object: StoredProcedure [dbo].[DV_GetPSCTreeNodes] Script Date: 08/10/2014 1:48:03 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Me!>
-- Description: <Used by data viewer GUI.>
-- =============================================
ALTER PROCEDURE [dbo].[DV_GetPSCTreeNodes]
-- Add the parameters for the stored procedure here
@iNodeLevel int,
@iParentNodeId bigint
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sQuery varchar (2000)
IF @iNodeLevel >= 5
RETURN
ELSE
-- Insert statements for procedure here
SET @sQuery = 'SELECT * FROM DataView.dbo.v_Tree
WHERE L' + CAST((@iNodeLevel + 1) AS VARCHAR(10)) + 'ID IS NULL
AND L' + CAST((@iNodeLevel) AS VARCHAR(10)) + 'ID = ' + CAST((@iParentNodeId)
AS VARCHAR(10))
EXEC (@sQuery)
END
如上所述,如果我在SMSS中運行此,我會得到預期的結果。但是,如果我通過已設置的服務運行這個服務,我會得到正確數量的記錄,但它們都是第一行的重複項(我可以查看錶並知道我正在重複)。如果我嘗試新的參數並在SSMS中獲得15個不同的行,我的網頁將顯示15行重複的第1行數據。
這裏是我的客戶呼叫:
List<v_PowerSystemCIMTree> list = null;
DVServiceClient proxy = new DVServiceClient();
try
{
list = proxy.DV_GetPSCTreeNodes(2,325550).ToList(); //2 and 325550 are just hardcoded to
//check to see if it's working
}
catch (Exception ex)
{
Console.WriteLine(ex.GetType().FullName);
Console.WriteLine(ex.Message);
}
finally
{
proxy.Close();
}
return View(list);
其中要求我的服務:
readonly DataViewerEntities _Context = new DataViewerEntities();
public List<DataViewer_DAL.v_PowerSystemCIMTree> DV_GetPSCTreeNodes(int firstParam,
long secondParam)
{
return _Context.DV_GetPSCTreeNodes(firstParam,secondParam).ToList();
}
見鬼,爲什麼我會得到一個結果在Management Studio中設置,但在重複數據我網頁?
已知問題:由於您從**視圖**中選擇了一個沒有定義的**主鍵**,實體框架將使用所有不可爲空的列作爲「實體鍵」。如果它從具有*相同實體鍵*的視圖中讀取第二行,它將只重複已讀的第一行 - 它將**不會**查看其他剩餘的列...... – 2014-10-08 20:35:39