是否可以将标量值函数与 LINQ to SQL 一起使用?



我不能使用任何设计图面,它会导致各种问题,所以我必须自己手动编辑 dbml 文件。

我把它放在 dbml 中:

<Function Name="dbo.Func_IsDisplayed" Method="Func_IsDisplayed">
<Parameter Name="EmployeeID" Parameter="employeeID" Type="System.Int32" DbType="Int" />
<Parameter Name="FiscalYear" Parameter="fiscalYear" Type="System.Int32" DbType="Int" />
<Return Type="System.Boolean" />
</Function>

对于 SP,这总是可以正常工作的。调用代码行为:

isDisplayed = db.Func_IsDisplayed(employeeID, fiscalYear);

但在运行时,它会导致以下异常: "System.Boolean"不是映射存储过程方法的有效返回类型。

SQL Server 中函数的返回类型为BIT

我需要在 DBML 中更改什么?我是否需要以某种方式指定它是一个标量值函数?

您必须添加IsComposable属性并将其设置为true。这也允许除Int32之外的其他返回类型。

<Function Name="dbo.Func_IsDisplayed" Method="Func_IsDisplayed" IsComposable="true">
<Parameter Name="EmployeeID" Parameter="employeeID" Type="System.Int32" DbType="Int" />
<Parameter Name="FiscalYear" Parameter="fiscalYear" Type="System.Int32" DbType="Int" />
<Return Type="System.Boolean" />
</Function>

最新更新