C# 实体框架存储过程抛出“;找不到源类型';的查询模式的实现;int'';选择';找不到。”;错误

C# 实体框架存储过程抛出“;找不到源类型';的查询模式的实现;int'';选择';找不到。”;错误,c#,entity-framework,stored-procedures,C#,Entity Framework,Stored Procedures,我有一个类中的方法使用实体框架调用存储过程,它不断抛出错误 找不到源类型“int”的查询模式的实现选择“未找到” 然而,我在另一个类中使用了完全相同的方法,它根本不会抛出任何错误 所讨论的方法是这样的 public List<ActiveAdministratorsForUpdate> GetActiveAdministratorByID(int id) { List<ActiveAdministratorsForUpdate> lst = new List<

我有一个类中的方法使用实体框架调用存储过程,它不断抛出错误

找不到源类型“int”的查询模式的实现选择“未找到”

然而,我在另一个类中使用了完全相同的方法,它根本不会抛出任何错误

所讨论的方法是这样的

public List<ActiveAdministratorsForUpdate> GetActiveAdministratorByID(int id)
{
    List<ActiveAdministratorsForUpdate> lst = new List<ActiveAdministratorsForUpdate>();
    var query = from a in AAE.usp_GetActiveAdministratorsByID(id)
                select a;

    foreach (var b in query)
    {
        lst.Add(new ActiveAdministratorsForUpdate
                    {
                       administratorID = b.AdministratorID,
                       administratorName = b.AdministratorName,
                       administratorPassword = b.UserPassword,
                       administratorEmail = b.AdministratorEmail,
                       administratorRole = b.RoleName,
                       administratorRoleID = b.RoleID });
    }

    return lst;
}

Stord过程返回一个
int
结果值,但您将存储过程用作行源。请发布存储过程的定义,或者只是签名行,以及
usp GetActiveAdministratorsByID
@Dai的EF代理签名,我做了一个edit@Dai,我查看了正在运行的代码,它与抛出错误的代码不同,有效的是公共部分类usp_GetActiveAdministratorsByID_ResultI删除了类库并重新创建了ef模型,现在它可以工作了
public virtual int usp_GetActiveAdministratorsByID(Nullable<int> administratorID)
    {
        var administratorIDParameter = administratorID.HasValue ?
            new ObjectParameter("AdministratorID", administratorID) :
            new ObjectParameter("AdministratorID", typeof(int));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("usp_GetActiveAdministratorsByID", administratorIDParameter);
    }
    ALTER PROCEDURE [dbo].[usp_GetActiveAdministratorsByID]
(
@AdministratorID int
)
AS
DECLARE @ERROR_SEVERITY int,
        @MESSAGE varchar(1000),
        @ERROR_NUMBER int,
        @ERROR_PROCEDURE nvarchar(200),
        @ERROR_LINE int,
        @ERROR_MESSAGE nvarchar(4000);

begin try
    select 
       administrator.AdministratorID,
       administrator.AdministratorName,
       administrator.AdministratorEmail,
       administrator.LoginID,
       lup.UserPassword,
       roles.RoleName,
       roles.RoleID
       from [Administrator] administrator
       inner join [Login] l on administrator.LoginID = l.LoginID
       inner join [LoginUserPassword] lup on lup.LoginUserPasswordID = l.LoginUserPasswordID 
       inner join [AdministrationHistory] administrationhistory on administrator.AdministratorID = administrationhistory.AdministratorID
       left join [Roles] roles on administrator.RoleID = roles.RoleID
       where administrationhistory.IsActive = 1 and administrator.AdministratorID = @AdministratorID
end try
BEGIN CATCH
    SET @ERROR_SEVERITY = ISNULL(ERROR_SEVERITY(),'');
    SET @ERROR_NUMBER = ISNULL(ERROR_NUMBER(),'');
    SET @ERROR_PROCEDURE = ISNULL(ERROR_PROCEDURE(),''); 
    SET @ERROR_LINE = ISNULL(ERROR_LINE(),'');
    SET @ERROR_MESSAGE = ISNULL(ERROR_MESSAGE(),'');

    -- Test if the transaction is uncommittable.
    IF (XACT_STATE()) = -1
        BEGIN
            --PRINT N'The transaction is in an uncommittable state. Rolling back transaction.'
            ROLLBACK TRANSACTION;
        END;

    -- Test if the transaction is active and valid.
    IF (XACT_STATE()) = 1
        BEGIN
            --PRINT N'The transaction is committable. Committing transaction.'
            COMMIT TRANSACTION;   
        END;

    SET @MESSAGE = 'Error Occured in Stored Procedure ' + cast(@ERROR_PROCEDURE as varchar(200)) + 
                    '; Line Number ' + cast(@ERROR_LINE as varchar) + 
                    '; Message: [' + cast(@ERROR_NUMBER as varchar) + '] - '
                    + cast(@ERROR_MESSAGE as varchar(255))

    RAISERROR(@MESSAGE, @ERROR_SEVERITY, 1);
END CATCH;