我不敢相信我不得不问这个问题,但我被卡住了。我花了三个小时想弄明白这一点,但我被困住了。
我在以前版本的C中能够做到这一点,但alias我被卡住了。
在我继续之前,这里是我正在处理的堆栈。。。
-
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表中返回该客户最喜欢的水果。
到现在为止,一直都还不错。一切正常。
现在,我想使用实体框架从C#控制台应用程序调用我的函数(fngetfruit)。
创建新的控制台应用程序。
从解决方案资源管理器的控制台应用程序内部,右键单击应用程序名称。选择添加==>新建项目==>ADO。NET实体数据模型。
我将我的命名为。edmx文件CustomersEF。
选择“从数据库生成”。设置连接。我采用customersEntities的默认实体连接名称。单击“下一步”。
在选择数据库对象和设置屏幕中,选择customers表和fngetfruit函数。单击“完成”。
接下来,您将进入一个显示数据库关系图的屏幕。在我的例子中,只有一个名为customer的表。该函数在哪里都找不到。
打开控制台应用程序的主要功能。
以下代码有效。。。
var cusDb = new customersEntities();
var custable = cusDb.customers;
但是,以下代码不起作用。。
var cusDb = new customersEntities();
var favfruit = cusDb.fngetfruit(1);
为什么我不能访问我的功能?我错过了什么?正如我所说,上述步骤在早期版本中对我有效。
谢谢