C# 实体框架存储过程抛出“;找不到源类型';的查询模式的实现;int'';选择';找不到。”;错误
我有一个类中的方法使用实体框架调用存储过程,它不断抛出错误 找不到源类型“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<
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;