我有以下性質的複雜類型的SalesOrderHeader: ORDERNUMBER 客戶名稱 CUSTOMERNUMBER PODate 評論 發票編號填充在實體框架的複雜類型
我已經創建了一個存儲過程(功能進口)來填充這些屬性。在我的程序中說uspGetDetails我使用:
首先選擇語句來獲取前4個屬性OrderNumber,CustomerName,CustomerNumber,PODate。
其次選擇Proprty提取評論
第三選擇屬性獲取InvoiceNumber如下
CREATE PROCEDURE uspGetHeaderDetails
-- Add the parameters for the stored procedure here
@OrderNumber CHAR(21)
AS
BEGIN
DECLARE @Counter INT;
DECLARE @OrignalNumber INT;
SELECT @Counter = count(*) FROM sop10100 WHERE sopnumbe = @OrderNumber
IF @Counter > 0
BEGIN
SELECT TOP 1 sopnumbe [OrderNumber]
, custname [CustomerName]
, custnmbr [CustomerNumber]
, cstponbr [CustomerPhoneNumber]
, docdate [PODate]
, orignumb [OriginalNumber]
FROM sop10100
WHERE sopnumbe = @OrderNumber
END
ELSE
BEGIN
SELECT TOP 1 sopnumbe [OrderNumber]
, custname [CustomerName]
, custnmbr [CustomerNumber]
, cstponbr [CustomerPhoneNumber]
, docdate [PODate]
, orignumb [OriginalNumber]
FROM SOP30200
WHERE sopnumbe = @OrderNumber
END
SELECT cmmttext [Comments]
FROM sop10106 WHERE sopnumbe = @OrderNumber
SELECT sopnumbe [InvoiceNumber]
FROM sop30200 WHERE orignumb = @OrderNumber
END
而下面是我的方法來執行這個過程來填充的SalesOrderHeader
[AcceptVerbs("POST")]
public ActionResult SearchResult(FormCollection collection)
{
string orderNumber = collection["searchItem"].ToString();
Models.SalesEntities db = new Models.SalesEntities();
ObjectParameter[] parameters = new ObjectParameter[1];
parameters[0] = new ObjectParameter("OrderNumber", orderNumber);
var headerResult = db.ExecuteFunction<Models.SalesOrderHeader>("uspGetHeaderDetails", parameters);
Models.SalesOrderHeader salesOrderHeader = new Models.SalesOrderHeader();
salesOrderHeader = headerResult.SingleOrDefault();
return View(salesOrderHeader);
}
問題:當我執行這個,我得到一個錯誤,說不兼容的數據,作爲函數導入我只提取第一個查詢的結果。沒有選擇第二個和第三個查詢(即註釋和發票號碼)的結果。
是否有可能通過存儲過程中的多個查詢來填充一個複雜類型? 如果沒有,那麼完成這個的其他方法是什麼?