我不敢相信我要问这个问题,但我被卡住了。我刚花了三个小时试图解决这个问题,但我被卡住了。
我以前在C#的一个旧版本中能够做到这一点,但现在我卡住了。
在继续之前,这是我正在使用的堆栈...
- Visual Studio 2012 - SQL Server 2012 - .NET Framework 3.5(我已经尝试了不同版本并得到了相同的结果)。
请考虑以下SQL代码:
然而,以下代码无法正常工作...
我以前在C#的一个旧版本中能够做到这一点,但现在我卡住了。
在继续之前,这是我正在使用的堆栈...
- Visual Studio 2012 - SQL Server 2012 - .NET Framework 3.5(我已经尝试了不同版本并得到了相同的结果)。
请考虑以下SQL代码:
create table dbo.customers
(
customerid int not null identity(1,1),
fname varchar(50),
lname varchar(50),
favfruit varchar(30)
)
go
alter table customers
add constraint customers_customerid_pk primary key (customerid)
insert into customers(Fname, lname, favfruit)
values ('Melissa', 'Smith', 'Apple'),
('Jennifer', 'Jones', 'Pear'),
('Jill', 'Brown', 'Apple')
create function dbo.fngetfruit(@customerid int)
returns varchar(30)
as
begin
declare @favfruit varchar(30)
select @favfruit = favfruit
from dbo.customers c (nolock)
where c.customerid = @customerid
return @favfruit
end
select dbo.fngetfruit(2)
这段代码创建了一个名为customers的表和一个名为fngetfruit的用户定义函数。该函数接受customerid并从customer表中返回该客户的最喜爱的水果。
到目前为止,一切正常,一切运作良好。
现在我想要使用Entity Framework从C#控制台应用程序调用我的函数(fngetfruit)。
创建一个新的控制台应用程序。
从解决方案资源管理器中,右键单击应用程序名称。选择“添加” ==> “新项目” ==> “ADO.NET Entity Data Model”。
我将.edmx文件命名为CustomersEF。
选择生成自数据库。设置您的连接。我采用了默认实体连接名称为 customersEntities。单击下一步。
在“选择您的数据库对象和设置”屏幕上,选择customers表和fngetfruit函数。单击完成。
接下来,您将进入显示数据库图表的屏幕。在我的情况下,我只有一个名为customer的单个表。无法找到该函数。
打开控制台应用程序的主要函数。
以下代码有效...
var cusDb = new customersEntities();
var custable = cusDb.customers;
然而,以下代码无法正常工作...
var cusDb = new customersEntities();
var favfruit = cusDb.fngetfruit(1);
为什么我无法访问我的函数?我缺少了什么?就像我所说的,在早期版本中,上述步骤对我起作用。
谢谢。
c#
?我觉得这极难相信。 - Camilo Terevinto