我想在linq lamda表达式中调用数据库标量值函数,DB函数的结果只是一个字符串值(NVARCHAR)。我使用moozzyk/CodeFirstFunctions在数据库上下文初始化程序中执行以下操作
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionsConvention<SOWealthDB>("dbo"));
}
public MyDB(string connectionName = "MyDB") : (connectionName)
{
[DbFunction("MyDB", "fnGetDescByDataLang")]
public ObjectResult<string> fnGetDescByDataLang(short langId, string desc1, string desc2, string desc3, string desc4)
{
var op1 = new ObjectParameter("DataLangId", langId);
var op2 = new ObjectParameter("Desc1", desc1);
var op3 = new ObjectParameter("Desc2", desc2);
var op4 = new ObjectParameter("Desc3", desc3);
var op5 = new ObjectParameter("Desc4", desc4);
var parameters = new ObjectParameter[] { op1, op2, op3, op4, op5 };
var rs = ((IObjectContextAdapter)this).ObjectContext
.ExecuteFunction<string>("fnGetDescByDataLang", parameters);
}
}
当我调用函数时,出现以下异常:
System.Data.Entity.Core.EntityCommandExecutionException:“商店数据提供者返回的数据读取器没有足够的列用于请求的查询。”
P.S .:调用表值函数没有问题