我正在使用Entity Framework 6.1.3,并采用数据库优先的方法让其生成模型文件和.EDMX
。我还在SQL Server 2008 R2上有以下存储过程,它被Entity Framework带入了EDMX:
CREATE PROCEDURE [dbo].[FindEmployee]
@LastName nvarchar(50),
@employeeID nvarchar(50),
@securityID nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
select *
from Employee
where
(lastName = dbo.trim(@LastName) AND dbo.trim(@LastName) IS NOT NULL)
OR (employeeID = dbo.trim(@employeeID) AND dbo.trim(@employeeID) IS NOT NULL)
OR (securityID = dbo.trim(@securityID) AND dbo.trim(@securityID) IS NOT NULL)
order by
case when dbo.trim(@LastName) is not null then CONVERT(char(50), lastName) + CONVERT(char(50), firstName)
when dbo.trim(@employeeID) is not null then employeeID
when dbo.trim(@securityID) is not null then securityID
end
END
在一个Windows WPF应用程序中,我让用户从下拉框中选择要搜索的列(
lastName
,employeeID
或securityID
)。用户提供一个搜索值,该值将被插入到调用存储过程的参数中。然后,存储过程从其SELECT
返回结果集,我将使用它来填充DataGrid
。我正在尝试在此代码中调用存储过程;请注意,
FindEmployee_Result
是存储过程的EDMX中自动生成的类:public FindEmployee_Result SearchEmployees(string lastName, string employeeID, string securityID)
{
var results = new FindEmployee_Result();
using (var ctx = new TestSelectionEntities())
{
results = ctx.FindEmployee(lastName,employeeID,securityID);
}
return results;
}
这段代码出错了,报错信息如下:
请问我漏掉了什么?谢谢。无法将类型为“System.Data.Entity.Core.Objects.ObjectResult”的值隐式转换为“TestSelection.data.FindEmployee_Result”
TestSelection.edmx
。所以它在那里,但如何调用它并使用其结果呢? - AlexList<FindEmployee_Result>
。 - Alex