我的程序中有一个 Entity Framework 4 实体模型。我在 SQL Anywhere 12.0.1 数据库中定义了一个存储函数,名为GuidToPrefix
:
CREATE OR REPLACE FUNCTION GuidToPrefix( ID UNIQUEIDENTIFIER ) RETURNS INT AS
BEGIN
RETURN CAST( CAST( ID AS BINARY(4) ) AS INT )
END;
按照这篇MSDN 文章中的说明,我将函数添加到我的 EDMX:
<Function Name="GuidToPrefix" ReturnType="int" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="DBA">
<Parameter Name="ID" Type="uniqueidentifier" Mode="In" />
</Function>
老实说,我从数据库中更新了模型,并在向导的第一个选项卡上的列表中检查了函数。我不知道这是否会有所不同,但我不明白为什么会这样。
根据文章,我需要在 C# 类中添加函数的定义。我的问题是它没有告诉我该放在哪个类中。我要添加一个全新的类吗?我是否创建一个新的 .CS 文件并执行以下操作:
public static DbFunctions {
[EdmFunction( "CarSystemModel.Store", "GuidToPrefix" )]
public static int GuidToPrefix( Guid id ) {
throw new NotSupportedException( "Direct calls to GuidToPrefix are not supported." );
}
}
还是我把它放在实体类的一部分中?
partial MyEntities {
[EdmFunction( "CarSystemModel.Store", "GuidToPrefix" )]
public static int GuidToPrefix( Guid id ) {
throw new NotSupportedException( "Direct calls to GuidToPrefix are not supported." );
}
}
我有两个使用此实体模型的项目。一个是类库,模型在其中定义。另一个是另一个解决方案中的另一个类库,它只是使用它。我已经尝试了上面的两个示例,并且第二个类库中的查询在两种情况下都会从编译器生成此错误:
The name 'GuidToPrefix' does not exist in the current context
显然我做的不对。有没有人试过这个并让它工作?