EF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' 在调用表值函数时具有无效的返回类型 'ÉmpMaster''
Posted
技术标签:
【中文标题】EF Core \'The DbFunction \'ÉmpContext.fnGetEmployeeEligibility\' 在调用表值函数时具有无效的返回类型 \'ÉmpMaster\'\'【英文标题】:EF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' has an invalid return type 'ÉmpMaster'' while calling table-valued functionEF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' 在调用表值函数时具有无效的返回类型 'ÉmpMaster'' 【发布时间】:2020-07-14 12:41:20 【问题描述】:我在 SQL Server fnGetEmployeeEligibility
中有一个表值函数,它接受 EmpId
,并根据一些计算返回一个包含这些列的结果集:
EmpId
(int
)
IsEligibleForPromotion
(bit
)
IsEligibleForHike
(bit
)
IsEligibleForRelocation
(bit
)
IsEligibleForRemote
(bit
)
IsEligibleForSuperWallet
(bit
)
SQL 函数工作正常,我已经对其进行了测试。现在 O 需要在我的应用程序中调用这个函数,我正在使用 EF Core
这是抛出一个错误:
DbFunction“ÉmpContext.fnGetEmployeeEligibility”的返回类型“ÉmpMaster”无效。确保返回类型可以被当前提供者映射到'
Public void CheckEligiblity(int empId)
var result = _empContext.fnGetEmployeeEligibility(empId);
在我的EmpContext
课堂上
[DBFunction("fnGetEmployeeEligibility","emp")]
Public EmpMaster fnGetEmployeeEligibility(int empId)
EmpMaster empM = new EmpMaster();
return empM;
我创建了一个自定义类 EmpMaster
,它具有映射函数 fnGetEmployeeEligibility
的属性:
Public Class EmpMaster
Public int EmpId get; set;
Public bool IsEligibleForPromotion get; set;
Public bool IsEligibleForHike get; set;
Public bool IsEligibleForRelocation get; set;
Public bool IsEligibleForRemote get; set;
Public bool IsEligibleForSuperWallet get; set;
【问题讨论】:
***.com/questions/59931594/… 【参考方案1】:在 EF Core 5.0 中添加了对表值函数作为一等公民的支持。
表值函数可以映射到返回 IQueryable 的函数,现在可以在您的 linq 查询中完全组合。
https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/whatsnew#table-valued-functions
【讨论】:
如何将自定义 DB 表类型直接映射到 .NET 类型,而不涉及实际表?假设我想返回任何表的查找数据(由输入参数 TABLE_NAME 定义到我的自定义 DB 函数):ID、DISPLAY_NAME、DESCRIPTION。我已经创建了 Oracle 类型并希望在 .NET 中获取 IEnumerable 查找对象列表...以上是关于EF Core 'The DbFunction 'ÉmpContext.fnGetEmployeeEligibility' 在调用表值函数时具有无效的返回类型 'ÉmpMaster''的主要内容,如果未能解决你的问题,请参考以下文章
为 JObject 属性混合 EF Core Convensions 和 DBFunction
CORE EF The expected type was 'System.String' but the actual value was of type 'System.G
.NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the
报错"Could not get a resource from the pool; nested exception is io.lettuce.core