C# 如何从EF4调用MYSQL SP

C# 如何从EF4调用MYSQL SP,c#,mysql,entity-framework,C#,Mysql,Entity Framework,我试图将SP添加到edmx文件中,但未显示输入参数。我试图使用下面的代码,但它出错了 IEnumerable<Finance> userFinance = ((IObjectContextAdapter)this) .ObjectContext.ExecuteStoreQuery<Finance>("GetFinanceContent @userId", parameter); 这会产生一些参数误差。 只有MySqlParameter对象可以存储在EF4中使用存储过程非

我试图将SP添加到edmx文件中,但未显示输入参数。我试图使用下面的代码,但它出错了

IEnumerable<Finance> userFinance =
((IObjectContextAdapter)this)
.ObjectContext.ExecuteStoreQuery<Finance>("GetFinanceContent @userId", parameter);
这会产生一些参数误差。
只有MySqlParameter对象可以存储

在EF4中使用存储过程非常简单。这里不需要在edmx文件中添加Sp,您可以直接访问它,只需使用函数映射即可遵循以下规则

更新模型并在其中添加存储过程

现在,在模型浏览器视图中,转到存储过程文件夹,您将在其中看到添加的SP

现在选择SP并通过右键单击选择创建函数导入选项

现在,函数导入窗口将在返回类型部分打开,根据SP返回的数据选择返回类型

->如果SP返回与某个实体完全匹配的实体,请选择该实体。如果是标量值,请选择其返回类型。如果不是,则需要创建与SP结果完全匹配的实体

之后,您可以像这样访问SP

using(EFEntity ef = new EFEntity ())
 {
    var results = from result in ef.YourSpName(Param1, param2,..)
              select result
 }
希望这对你有帮助

最新答复: 正如您所说的,您没有获得参数,这意味着这里没有在您的SSDL中定义参数,因此您必须手动执行此操作

是你问题的解决办法


祝你好运

你为此完成了函数导入步骤吗?我尝试过这种方法,由于我使用的是MYSQL Db,所以当它将SP拉入数据库时,似乎没有显示参数model@Natasha:执行这些步骤后,请检查您的CSDL是否已在其中定义了SP参数,如果没有,则必须手动添加它。您提供的链接指向的问题与我告诉您的相同。您必须在CSDL中手动添加参数因为它没有得到它。不仅仅是因为当模型更新时,您在edmx中手动所做的每一项更改都会被清除,这是一种常见的行为。错误还说6.3.7有固定版本,但显然不是这样,因为我刚刚安装了它,而且仍然有相同的issue@Natasha:问题仍然存在,目前的解决方案是手动添加参数。在CSDL和SSDL两部分的emdx文件中搜索您的sp,并手动将您的参数添加到其中。如果您阅读并遵循链接,您的问题应该会得到解决
using(EFEntity ef = new EFEntity ())
 {
    var results = from result in ef.YourSpName(Param1, param2,..)
              select result
 }