如何从EF4调用MYSQL SP

时间:2011-07-03 05:48:36

标签: c# mysql entity-framework

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

IEnumerable<Finance> userFinance =
((IObjectContextAdapter)this)
.ObjectContext.ExecuteStoreQuery<Finance>("GetFinanceContent @userId", parameter);

我也尝试过:

SqlParameter parameter = new SqlParameter
    {
        DbType= DbType.Int32,
        Direction = ParameterDirection.Input,
        Value= 100,
        ParameterName ="userId"
    };
var results= db.Database.ExecuteSqlCommand ("GetFinanceContent @userId", parameter);

这会给出一些参数错误。 只能存储MySqlParameter对象

1 个答案:

答案 0 :(得分:0)

使用EF4中的存储过程进行Woking非常简单。这里不需要在edmx文件中添加Sp就可以直接访问它,只需按照这些规则使用函数映射......

  1. 更新您的模型并在其中添加存储过程。

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

  3. 现在选择SP并通过右键单击选择“创建函数导入”选项。

  4. 现在函数导入窗口将在其中打开返回类型部分根据您的SP返回的数据选择返回类型..

    - &GT;如果您的SP返回实体的完全匹配,请选择该实体。如果是标量值,则选择其返回类型,否则您需要创建一个与您的SP结果完全匹配的实体。

  5. 之后你可以像这样访问SP。

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

    更新的答案: 正如你所说,你没有得到参数,这意味着你的SSDL中没有定义参数,所以你必须这样做。

    Here是您问题的解决方案。

    祝你好运