我不能使用任何设计图面,它会导致各种问题,所以我必须自己手动编辑 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>