Я хочу вызвать скалярно-значную функцию базы данных в выражении 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);
}
}
Когда я вызываю функцию, я получаю следующее исключение:
Система.Data.Entity.Core.EntityCommandExecutionException: 'В считывателе данных, возвращенном поставщиком данных хранилища, недостаточно столбцов для запрошенного запроса.'
PS: у меня нет проблем с вызовом табличных функций