' System.Data.Metadata.Edm.EdmFunction'不是属性类

时间:2017-07-14 22:21:12

标签: c# entity-framework linq edmx

我正在维护一个visual studio 2008应用程序(网站项目)。没有机会升级到更高版本的.NET框架或更高版本的实体框架。像许多IT商店一样,除非存在重大问题,否则人们不会允许我对系统进行重大升级。

.net框架是3.5。并且EF版本是1.0

我需要更改我的程序,因此我的选择linq语句将起作用

Calling a SQL User-defined function in a LINQ query

正如您所知,我需要将存储的函数作为select语句的一部分包含在内

所以我复制了这句话。

我已经挣扎了几个小时,而且我一直在编译。

//..various using statement
using System.Data.Objects.DataClasses;
using System.Data.Metadata.Edm;

//..other class
public static class EntityFunctions 
{
    [EdmFunction("FBLModel.Store", "SampleFunction")]
    public static int SampleFunction(int param)
    {
        throw new NotSupportedException("Direct calls are not supported.");
    }
}

我不断收到编译错误

错误CS0246:类型或命名空间名称' EdmFunctionAttribute'找不到(你错过了使用指令或汇编引用吗?)

我搜索了整个互联网包括stackoverflow和MSDN博客,名称空间看起来正确

enter image description here

有什么建议吗?谢谢

1 个答案:

答案 0 :(得分:0)

这里的问题是你的命名空间引用了冲突。

System.Data.Objects.DataClasses命名空间包含一个名为EdmFunction的类。 =index(B:B,row()) 命名空间包含一个名为EdmFunctionattribute的类(您正在尝试使用它)。

由于某种原因,您的代码引用了EdmFunction类。尝试删除System.Data.Metadata.Edm的名称空间导入,因为您可能不想首先导入它。