Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ADO.NET实体框架中运行存储过程?_C#_.net_Linq To Sql_Entity Framework - Fatal编程技术网

C# 如何在ADO.NET实体框架中运行存储过程?

C# 如何在ADO.NET实体框架中运行存储过程?,c#,.net,linq-to-sql,entity-framework,C#,.net,Linq To Sql,Entity Framework,如何在ADO.NET实体框架中使用存储过程 我的桌子:我的顾客 Columns: CustomerID PK int Name nvarchar(50) SurName nvarchar(50) 我的存储过程 ALTER procedure [dbo].[proc_MyCustomerAdd] (@Name nvarchar(50), @SurName nvarchar(50) ) as begin insert into d

如何在ADO.NET实体框架中使用存储过程

我的桌子:我的顾客

Columns:
CustomerID    PK   int 
Name               nvarchar(50)
SurName            nvarchar(50)
我的存储过程

ALTER procedure [dbo].[proc_MyCustomerAdd]
(@Name nvarchar(50),
@SurName nvarchar(50)
)
as 
begin
  insert into dbo.MyCustomer([Name], SurName) values(@name,@surname)
end
我的C代码

错误:

数据读取器与指定的 “TestAndEntity2Model.MyCustomer”。A. “CustomerID”类型的成员 中没有相应的列 具有相同名称的数据读取器

最后一个代码行下方出现错误(调用ExecuteFunction):

global::System.Data.Objects.ObjectParameter;
如果((姓氏!=null))
{
姓氏参数=新的全局::System.Data.Objects.ObjectParameter(“姓氏”,姓氏);
}
其他的
{
姓氏参数=新的全局::System.Data.Objects.ObjectParameter(“姓氏”,typeof(字符串));
}
返回base.ExecuteFunction(“MyCustomerAdd”、nameParameter、nameParameter);
我可以。每增加一个过程都可以。但是在编辑之后,出现了上述错误。

只是一个猜测(我没有在存储过程中使用EF):在“ExecuteFunction”中使用的函数名称不一定与存储过程的名称相同吗

return base.ExecuteFunction("MyCustomerAdd", nameParameter, surNameParameter);

ALTER procedure [dbo].[proc_MyCustomerAdd]
您可以尝试使用:

return base.ExecuteFunction("proc_MyCustomerAdd", nameParameter, surNameParameter);
这有什么区别吗


Marc

我认为您需要使用EF工具进行函数导入,并调用导入的函数,如

DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)

要调用查询操作的存储过程,可以在Entityframework中使用SqlQuery,这非常有用

_dbContext.Database.SqlQuery<EntityType>("sp_name",parameters).ToList();

请注意,上下文类的dbContext对象继承自Entityframework的dbContext类

i find solution。非常感谢。您可以在C#“proc#u MyCustomerAdd-->MyCustomerAdd”中更改sp名称是的,您可以在C#中更改过程的名称,但存储的过程仍然称为“proc#u MyCustomerAdd”,并且在调用base.ExecuteFunction时,我知道你必须给它一个存储过程的名称——不管你的C#函数叫什么……@Penguen如果你“找到了解决方案”,你真的应该把它作为一个答案发布出来,并接受它让其他人看到。
DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)
_dbContext.Database.SqlQuery<EntityType>("sp_name",parameters).ToList();
_dbContext.Database.ExecuteSqlCommand( 
                    @"UPDATE tblname SET Rating = 5" + 
                        " WHERE Name LIKE '%Entity Framework%'" 
                    );