Stored procedures 如何使用EF6代码优先-现有数据库方法调用具有多个refcursor的oracle DB存储过程?

Stored procedures 如何使用EF6代码优先-现有数据库方法调用具有多个refcursor的oracle DB存储过程?,stored-procedures,ef-code-first,entity-framework-6,oracle12c,Stored Procedures,Ef Code First,Entity Framework 6,Oracle12c,我不熟悉实体框架。我有几个存储过程,其中有多个ref游标。现在,我尝试使用EF6代码优先的方法访问这些存储过程。我该怎么做?请帮帮我 例如,我的Country.cs如下所示: public partial class Country { public decimal Id { get; set; } public string Code { get; set; } public string Name { get; set; } public string For

我不熟悉实体框架。我有几个存储过程,其中有多个ref游标。现在,我尝试使用EF6代码优先的方法访问这些存储过程。我该怎么做?请帮帮我

例如,我的Country.cs如下所示:

public partial class Country
{
    public decimal Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public string ForeignName { get; set; }
    public string StateFlag { get; set; }
    public string ZipCodeFlag { get; set; }
    public string EUFlag { get; set; }
    public string CrossBookingFlag { get; set; }
    public string Status { get; set; }
    public Nullable<System.DateTime> CreatedOn { get; set; }
    public Nullable<decimal> LastUpdatedBy { get; set; }
    public Nullable<System.DateTime> LastUpdatedOn { get; set; }
    public Nullable<decimal> PurgeYear { get; set; }
}

如何首先使用现有数据库的ef6代码访问此存储过程,并将返回的结果集分配给列表?

使用telerik data access它对我有用。 首先下载telerik并使用
telerik Data Access Domain Model
映射数据库,然后在
Model Schema Explorer
中找到存储过程,右键单击
存储过程
,然后单击
创建域方法
,然后单击
检索结果形状
并创建复杂类型

using (EntitiesModel1 entitiesModel1 = new EntitiesModel1())
{
    var z = entitiesModel1.GETBINDEDSUBSCRIPTIONSP("some text");
    Console.WriteLine(z.Count());
}
您将遇到如下异常:
无法将Oracle.DataAccess.Client.OracleParameter类型的对象强制转换为Oracle.ManagedDataAccess.Client.OracleParameter类型。

转到存储过程定义,将
Oracle.DataAccess.Client.OracleParameter
更改为
Oracle.ManagedDataAccess.Client.OracleParameter
,并为每个参数指定参数方向。

别忘了添加
Oracle.ManagedDataAccess
作为您项目的参考。

谢谢您的回复,但不幸的是我不能使用telerik数据访问,我只能使用EForm。使用EF代码优先方法执行此操作的步骤是什么
using (EntitiesModel1 entitiesModel1 = new EntitiesModel1())
{
    var z = entitiesModel1.GETBINDEDSUBSCRIPTIONSP("some text");
    Console.WriteLine(z.Count());
}