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