Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “System.Data.Metadata.Edm.EdmFunction”不是属性类_C#_Entity Framework_Linq_Edmx - Fatal编程技术网

C# “System.Data.Metadata.Edm.EdmFunction”不是属性类

C# “System.Data.Metadata.Edm.EdmFunction”不是属性类,c#,entity-framework,linq,edmx,C#,Entity Framework,Linq,Edmx,我正在维护一个VisualStudio2008应用程序网站项目。没有机会升级到更高版本的.net framework或更高版本的entity framework。像许多IT商店一样,除非有重大问题,否则人们不会允许我对系统进行重大升级 net框架是3.5。EF版本是1.0 我需要更改我的程序,这样我的select linq语句就可以工作了 可以看出,我需要在select语句中包含存储函数 所以我抄了那份声明 我已经挣扎了几个小时,而且我一直在努力 //..various using statem

我正在维护一个VisualStudio2008应用程序网站项目。没有机会升级到更高版本的.net framework或更高版本的entity framework。像许多IT商店一样,除非有重大问题,否则人们不会允许我对系统进行重大升级

net框架是3.5。EF版本是1.0

我需要更改我的程序,这样我的select linq语句就可以工作了

可以看出,我需要在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”。是否缺少using指令或程序集引用

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


有什么建议吗?谢谢

这里的问题是您的名称空间引用冲突

System.Data.Metadata.Edm命名空间包含一个名为EdmFunction的类。System.Data.Objects.DataClasses命名空间包含一个名为EdmFunctionattribute的类,您正试图使用该类


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

您的异常表明不应直接调用该方法。这使我怀疑没有任何方法直接调用该方法,甚至可能调用整个库,因此编译器在构建解决方案时不包含引用,因为它认为忽略未使用的引用是在优化输出。您能否尝试创建一个硬引用,以便确定编译器不会忽略它?e、 g.创建一个名为test的公共属性,然后在主项目中获取一次值,这样代码至少会接触它一次,并确保加载程序集?上面我说编译器会忽略它,但这并不准确,因为dll仍将包含在输出中。我说的更多的是运行时优化,程序集从未加载过。我只是想澄清一下:这可能是T4模板的问题。也许他们属于错误的EF版本?转到Model.Context.tt并检查using System.Data.Objects.DataClasses;包括在内。我从中得到了启示。一次又一次地解决问题比升级更便宜,这是一个典型的陷阱。卡尼曼,这是一个逻辑上的缺陷,从思维上看,有快也有慢。此外,EF1是出了名的不成熟,它几乎不再被使用了,所以你实际上是靠自己。此外,当出现重大问题时,认为要升级是一种错觉。升级和回归测试的最佳时间是在没有问题的时候。谢谢大家的回复。它不支持context.tt。奇怪的它有dbml。我不能再使用gui了。我必须去文件手动更改。这是我职业生涯中第二次不得不这么做。我继承。我无能为力。我有4个项目要做。对于这个老项目,我只需要确保它不会中断。最终,它将升级。是的,现在不是时候,因为我没有时间。哦,这是一个网站项目。我需要弄清楚它是如何引用dll的。我真的很想。。。最初的开发者。我做了2008年的b4。不是这样的!