2017-03-22 132 views
0

我正在使用實體框架數據庫第一種方法。我正在爲存儲過程創建複雜類型,以便我可以在ASP.NET MVC應用程序中使用它。我需要創建複雜類型,因爲Entity Framework不會爲我創建它。我無法將複雜類型與創建的實體類進行映射。我得到一個錯誤映射到複雜類型(實體框架)給出錯誤

無法隱式轉換類型「System.Collections.Generic.List」到「廉政」

有人能告訴我是什麼問題?

存儲過程:

CREATE PROCEDURE [dbo].[spUserExists] 
    (@NetworkID varchar(20), 
    @Domain varchar(50), 
    @RoleID int) 
AS 
BEGIN 
    set nocount on 

    ---------------------------------------- 
    -- variables 
    ---------------------------------------- 

    -- error 
    declare @ErrorMessage nvarchar(2048), @ErrorSeverity int, @ErrorState int 

    ---------------------------------------- 
    -- exists 
    ---------------------------------------- 

    declare @UserExists int; set @UserExists = 0 

    begin try 

     select @UserExists = 1 
     where exists (Select up.NetworkID, up.Domain, ur.RoleId 
         from dbo.UserProfile up 
         inner join UserProfileRoleLink ur on up.UserProfileId = ur.UserProfileId 
         where up.NetworkID = @NetworkID 
         and up.Domain = @Domain 
         and ur.RoleId = @RoleID) 

    end try 
    begin catch 
     select 
      @ErrorMessage = dbo.GetErrorMessage('Exists', error_message(), object_schema_name(@@procid), object_name(@@procid), error_line()), 
      @ErrorSeverity = error_severity(), 
      @ErrorState = error_state(); 

     raiserror(@ErrorMessage, @ErrorSeverity, @ErrorState); 

     return 
    end catch 

    select @UserExists as UserExists 
END 

實體類:

public class ValidUser 
    { 
     public Int32 UserExists { get; set; } 
    } 

功能導入:

enter image description here

複雜類型:

enter image description here

映射和返回值:

public static System.Int32 UserValidate() 
{ 
     using (var db = new MCREntities()) 
     { 
      var isValid = db.spUserExists(GetShortname(), GetDomain(), 1); 
      return Mapper.Map<List<ValidUser>>(isValid); 
     } 
} 
+0

你可以描述'var isValid'它是什麼類型的?作爲錯誤消息它是一個列表你應該看看這個。 –

+0

它是我相信的列表。 – Tom

+0

ops,所以你需要創建一個自定義Map,爲此,或者我認爲它可以像'isValid.Select(x => Mapper.Map (x))一樣運行;'試試這個; –

回答

0

我認爲你需要的方法UserValidate返回類型是列表,而不是的Int32。