“ObservableCollection”类型或命名空间找不到。

14

我正在使用asp.net c#框架3.5中的Entity Framework,使用poco生成器模板生成实体类。

但是我遇到了以下错误:

找不到类型或命名空间名称ObservableCollection (您是否缺少using指令或程序集引用?)

请注意,System.Collections.ObjectModel也已添加到类中。

可能出了什么问题?如何解决?


6
你是否检查了程序集引用是否缺失?ObservableCollection类在.NET Framework 3.5版本中位于WindowsBase程序集中,在4.0版本中位于System程序集中。 - dtb
我认为在3.5版本中,汇编代码是不同的。 - Charlie Brown
1
添加WindowsBase引用解决了问题。感谢dtb。但现在出现了下一个错误... :(错误4:找不到类型或命名空间名称“ObjectSet”(是否缺少使用指令或程序集引用?) - Riz
1
ObjectSet<T>类位于.NET Framework 4.0中的System.Data.Entity程序集中,而在3.5版本中不存在。请参阅:使用ObjectSet - dtb
我的错 :(那么..我不能在框架3.5中使用这些实体类 - 对吗?因为我需要在框架3.5中构建应用程序, 除了POCO实体生成器之外,是否有任何替代方法来生成支持框架3.5的类? - Riz
显示剩余3条评论
5个回答

18

使用System.Collections.ObjectModel;


17

WindowsBase添加到您的引用中。


这个答案是正确的。Observable Collection在3.5中可用,但你必须添加WindowBase引用。 - arturn
在3.0中也可用,但在3.5中必须添加对WindowBase的引用。据我所知,在3.0以下版本中不可用。 - spinjector

2

@Riz,请确保您的项目引用了System.Windows,因为ObservableCollection位于System.Collections.ObjectModel命名空间中,该命名空间在.Net 4.0中位于System.Windows中,在.Net 3.0和3.5中位于System.Collection.ObjectModel中。在此之前是不可用的。在Silverlight中,它可以在System.Collections.ObjectModel中找到。


3
不完全正确。ObservableCollection类始终位于System.Collections.ObjectModel命名空间中。然而,在不同版本的.NET中,它在不同的程序集中:在3.5中在WindowsBase程序集中,在4.0中在System程序集中。在Silverlight中,它在System.Windows程序集中。 - dtb
是的,@dtb的评论解决了那个问题。现在的问题在于ObjectSet...请参见上面的评论。 - Riz

1

请确保System.Data.Entity Dll的版本为4,而非2。看起来它只存在于.net framework 4.0上。


-3

我认为ObservableCollection只存在于.NET 4.0中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接