2013-08-21 75 views
0

我已經創建了Complex Types,即GetIsActive_Result in DemoModel.edmx。它有一個Scalar Property,即邀請ID類型Int32。我創建了一個執行存儲過程的函數。在這裏我的功能。不能隱式轉換int?複雜類型

public GetIsActive_Result GetIsActiveUser(string email) 
    { 
     GetIsActive_Result result = null; 

     System.Data.Objects.ObjectParameter InvitationID; 
     InvitationID = new System.Data.Objects.ObjectParameter("InvitationID", -1); 

     var results = this.DataContext.GetIsActiveUser(email, InvitationID); 
     if (results != null) 
     { 
      result = results.FirstOrDefault(); 
     } 
     return result; 
    } 

該功能執行存儲過程即GetIsActiveUser

USE [Demo] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER Procedure [dbo].[GetIsActiveUser] 
(
    @Email NCHAR(100), 
    @InvitationID INT OUTPUT   
) 
AS 
BEGIN 
SET NOCOUNT ON; 

BEGIN TRY 

    IF EXISTS(select * from Users,Invitations where [email protected] and IsActive='Active' and Invitations.Email != @Email) 
     BEGIN 
      SET @InvitationID=1 
     END 

    ELSE IF EXISTS(select * from Users,Invitations where [email protected] and IsActive='InActive' and Invitations.Email = @Email) 
     BEGIN 
      SET @InvitationID=0 
     END 

    SELECT @InvitationID AS InvitationID 
END TRY 
BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     BEGIN 
      ROLLBACK 
     END 
    EXEC ThrowError 
END CATCH 
END 

這是一個簡單的存儲過程,它返回InvitationID。我在線result = results.FirstOrDefault();

不能隱式轉換類型'int?' 'DemoAppWebService.GetIsActive_Result'

我該如何解決這個錯誤?我的代碼出了什麼問題?

+1

爲什麼(INT作爲複雜類型的複雜混淆)? –

+0

其實最終結果會來''ObjectParameter'' InvitationID' Rite ??是否是參數?或者函數GetIsActiveUser的返回對象是如何構造的?但只有詮釋返回????? –

回答

3
DataContext.GetIsActiveUser 

返回給你一個可爲空的int。並且您試圖將其解析爲DemoAppWebService.GetIsActive_Result,這是不允許的。你需要改變你的方法如下面

的一個或者如果你想你的現有代碼(略有修改)比你的方法DataContext.GetIsActiveUser需要返回DemoAppWebService.GetIsActive_Result

public int? GetIsActiveUser(string email) 
{ 
    System.Data.Objects.ObjectParameter InvitationID; 
    InvitationID = new System.Data.Objects.ObjectParameter("InvitationID", -1); 

    return this.DataContext.GetIsActiveUser(email, InvitationID); 
} 
+0

是的......另一種方法......瞭解到。謝謝@NoOne –

+0

我已經在GetIsActiveUser –

+1

中設置了InvitationID的Nullable屬性,問題在於你的方法DataContext.GetIsActiveUser(email,InvitationID);返回一個int?不是DemoAppWebService.GetIsActive_Result – Ehsan

1

你可以使用LINQ

工作
var results = this.DataContext.GetIsActiveUser(email, InvitationID) 
.Cast<GetIsActive_Result>(); 

警告錯誤/或返回NULL,如果無法轉換

或者你可以構建的對象與可爲空int結果。

+0

我已經在GetIsActiveUser中設置了InvitationID的Nullable屬性 –

+0

嘿,我在函數導入中給出了錯誤的書寫類型。非常感謝您的幫助 –

相關問題