C# (使用Visual Studio 2013)如何使用实体框架调用oracle包内的存储过程?
我曾尝试添加oracle过程,该过程使用带有ADO.NET实体数据模型的EF5放在包中,但没有导入任何内容。我看不到任何程序 我正在使用ODAC 12c第3版->Oracle数据提供 我可以导入在包外部创建的过程 我们的开发标准是使用oracle软件包来定义过程。我现在使用实体框架从VS2008迁移到VS2013C# (使用Visual Studio 2013)如何使用实体框架调用oracle包内的存储过程?,c#,oracle,entity-framework,C#,Oracle,Entity Framework,我曾尝试添加oracle过程,该过程使用带有ADO.NET实体数据模型的EF5放在包中,但没有导入任何内容。我看不到任何程序 我正在使用ODAC 12c第3版->Oracle数据提供 我可以导入在包外部创建的过程 我们的开发标准是使用oracle软件包来定义过程。我现在使用实体框架从VS2008迁移到VS2013 请提出建议并提供可能的解决方案以克服此问题。非常感谢。以下是我在最近的一个项目中如何做类似的事情。请注意,我使用DevArt而不是ODAC,但也许您会在这里找到一些灵感来解决您的问题
请提出建议并提供可能的解决方案以克服此问题。非常感谢。以下是我在最近的一个项目中如何做类似的事情。请注意,我使用DevArt而不是ODAC,但也许您会在这里找到一些灵感来解决您的问题 我首先创建了一个类,其中包含函数所需的所有参数:
public class MyFunctionParameter
{
public DateTime? MyDateTime { get; set; }
public string Source { get; set; }
}
此类还包含一个ToOracleParameters方法。请注意:
在我的方法中,我使用了这样的类:
var parameters = parameter.ToOracleParameters();
var inParameterList = string.Join(", ",
parameters.Where(x => x.Direction == ParameterDirection.Input)
.Select(x => ":" + x.ParameterName));
var outParameter = parameters.Single(x => x.Direction == ParameterDirection.Output);
var sql = string.Format("BEGIN :{0} := MY_ORACLE_FUNCTION({1}); end;",
outParameter.ParameterName, inParameterList);
DbContext.Database.SqlQuery<object>(sql, parameters.Cast<object>().ToArray()).SingleOrDefault();
尝试执行以下操作: 在服务器资源管理器->数据连接中,您将看到为生成模型而建立的连接。您可以从那里修改连接。有一个名为“过滤器”的选项卡,从中可以设置许多可以看到的对象。例如,您可以获取公共同义词和显示的集合包、视图、表等 我不是Oracle专家,但是,您能为包中的过程创建一个公共同义词吗?也许会有用 如果您找不到解决方案,您可以到这里: 一些为Oracle开发实体框架的人可能会帮助您 希望能有帮助 问候
var parameters = parameter.ToOracleParameters();
var inParameterList = string.Join(", ",
parameters.Where(x => x.Direction == ParameterDirection.Input)
.Select(x => ":" + x.ParameterName));
var outParameter = parameters.Single(x => x.Direction == ParameterDirection.Output);
var sql = string.Format("BEGIN :{0} := MY_ORACLE_FUNCTION({1}); end;",
outParameter.ParameterName, inParameterList);
DbContext.Database.SqlQuery<object>(sql, parameters.Cast<object>().ToArray()).SingleOrDefault();