我遇到实体开发人员和模型定义函数的问题。 Ealier我将函数映射为存储过程,因为实体开发人员不支持数据库功能。我正在使用此topic from devart forum中提到的解决方案。但是现在它对我没有用处,因为我不能在Linq
查询中将它用作实体上较大选择语句的一部分。实体框架6无法识别数据库模型中的映射函数
我想添加像this这样的功能,并使其提到here。但是,我得到这个例外
其他信息:LINQ到实体无法识别方法“System.Nullable
1[System.Int32] EwBlobIleWyst(System.String, System.Nullable
1 [System.Int32],System.String,System.Nullable`1 [System.Int32]) '方法,并且此方法不能转换为商店表达式。
在SSDL文件功能是这样产生的:
<Function Name="EW_BLOB_ILE_WYST" IsComposable="true" ReturnType="decimal" BuiltIn="false" Aggregate="false" NiladicFunction="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="EWID4" StoreFunctionName="EW_BLOB_ILE_WYST">
<Parameter Name="OWNER" Type="VARCHAR2" Mode="In" />
<Parameter Name="OWNER_ID" Type="decimal" Mode="In" />
<Parameter Name="RODZ_DOK_IDS" Type="VARCHAR2" Mode="In" />
<Parameter Name="LICZ_PUSTE" Type="decimal" Mode="In" />
在CSDL文件是这样的:
<Function Name="EwBlobIleWyst" ReturnType="Collection(Int32)" ed:Guid="f544518f-1cdd-484c-92b4-73b61491dc54">
<Parameter Name="OWNER" Type="String" />
<Parameter Name="OWNER_ID" Type="Int32" />
<Parameter Name="RODZ_DOK_DS" Type="String" />
<Parameter Name="LICZ_PUSTE" Type="Int32" />
<DefiningExpression>SELECT EWID4.EW_BLOB_ILE_WYST(:OWNER, :OWNER_ID, :RODZ_DOK_IDS, :LICZ_PUSTE) FROM KDOK_WSK</DefiningExpression>
,我的实看起来像这个:
[EdmFunction(@"Ewid4", @"EwBlobIleWyst")]
public virtual global::System.Nullable<int> EwBlobIleWyst(string OWNER, global::System.Nullable<int> OWNER_ID, string RODZ_DOK_IDS, global::System.Nullable<int> LICZ_PUSTE)
{
throw new NotSupportedException();
}
此代码位于部分上下文类中。 ,我使用它是这样的:
DokPow = ((Ewid4)context).EwBlobIleWyst("smth", 1, null, 0)
这个片段里面选择使用LINQ