C# SQLServer/实体框架。从.net 3.5调用存储函数

C# SQLServer/实体框架。从.net 3.5调用存储函数,c#,entity-framework-4,C#,Entity Framework 4,调用函数有一些问题 var query = _entities.CreateQuery<double?>( String.Format("select [dbo].[udf_ExchangeCurrencyRatesGetValue] ({0},{1},{2},{3})", "'bid'", activeScenario.Scenario_id, product.ID, pair.Instr_id)); var bidValue = query.Execute(MergeOpti

调用函数有一些问题

var query = _entities.CreateQuery<double?>(
String.Format("select [dbo].[udf_ExchangeCurrencyRatesGetValue] ({0},{1},{2},{3})", "'bid'", activeScenario.Scenario_id, product.ID, pair.Instr_id));

var bidValue =  query.Execute(MergeOption.OverwriteChanges).GetEnumerator().Current;
activeScenario.Scenario\u id、product.id、pair.Instr\u id-整数变量

执行query.Execute时,引发异常:

查询语法无效,靠近第2行第0列

该查询完全在.net 4上运行:

var bidValue =DataAdapter.ModuleEntities.ExecuteStoreQuery<double?>(String.Format("select [dbo].[udf_ExchangeCurrencyRatesGetValue] ({0},{1},{2},{3})", "'bid'", ratesScenario.Scenario_id, product.ID, pair.Instr_id)).First();

有人知道如何在.net 3.5上运行此代码吗?

如果您想通过实体框架调用MS SQL中的表值函数; 您可以使用以下选项:

var retval = new List<MyClass>();
retval = db.Database.SqlQuery<MyClass>(String.Format(@"select * from dbo.myDatabaseFunction({0})", id)).ToList<MyClass>();
我们必须说ToList方法和MyClass的映射类型必须包含所有通过函数返回的列