C# WPF实体可以';是否不创建视图的对象集?

C# WPF实体可以';是否不创建视图的对象集?,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我已将数据库视图添加到实体模型中。现在我正试图将一个ObjectSet放入我的ObjectContext中,这样我就可以访问我的应用程序中的视图 对于常规表,我的ObjectSet如下所示: private ObjectSet<StarVendor> _StarVendor; public ObjectSet<StarVendor> StarVendor { get { if ((_StarVendor == null))

我已将数据库视图添加到实体模型中。现在我正试图将一个
ObjectSet
放入我的
ObjectContext
中,这样我就可以访问我的应用程序中的视图

对于常规表,我的
ObjectSet
如下所示:

private ObjectSet<StarVendor> _StarVendor;
public ObjectSet<StarVendor> StarVendor
{
    get
    {
        if ((_StarVendor == null))
        {
            _StarVendor = base.CreateObjectSet<StarVendor>("Stratus_X_TestEntities.StarVendors");
        }
         return _StarVendor;
    }
}
private ObjectSet\u-inquindor;
公共对象集饥饿者
{
得到
{
如果((_-iraindor==null))
{
_饥饿者=base.CreateObjectSet(“Stratus_X_testenties.饥饿者”);
}
返回-饥饿或饥饿;
}
}
因此,我对我的观点也采取了同样的做法:

private ObjectSet<CatalogItemSearch> _CatalogItemSearch;
public ObjectSet<CatalogItemSearch> CatalogItemSearch
{
    get
    {
        if ((_CatalogItemSearch == null))
        {
            _CatalogItemSearch = base.CreateObjectSet<CatalogItemSearch>("Stratus_X_TestEntities.CatalogItemSearch");
        }
        return _CatalogItemSearch;
    }
}
private ObjectSet\u CatalogItemSearch;
公共对象集CatalogItemSearch
{
得到
{
如果(_CatalogItemSearch==null))
{
_CatalogItemSearch=base.CreateObjectSet(“Stratus_X_TestEntities.CatalogItemSearch”);
}
返回_CatalogItemSearch;
}
}
但当代码运行时,我得到一个异常:

System.InvalidOperationException“EntitySet名称 找不到“Stratus_X_TestEntities.CatalogItemSearch”

我知道,对于视图,我不需要
ObjectSet
提供的添加/更新/删除功能

是否有其他集合类型可供我使用

或者,这个错误可能来自与它是一个视图这一事实完全无关的东西吗


谢谢

如果您使用CodeFirst,您可以在映射表时始终映射视图(使用数据库集),然后它应该可以工作。

我想指出,
对象集
API以及
对象上下文
API是实体框架的旧API,现在通常不再使用

它是EntityFramework4.0的一部分,那是很久以前的事了(请参阅)

2011年发布了Entity framework 4.1版,建议从现在起改用
DbSet
DbContext
API。 entity framwork的当前生产就绪版本是版本6,版本7正在开发中

我建议您转到Entity framework 6,您可以使用Nuget将其安装到Visual Studio项目中:


这里有一章介绍了
DbSet
API与旧API的区别。看一看“介绍DbContext和DbSet”一章。

据我所知,这是代码优先的方法?使用“从数据库更新模型”功能将视图拉入.edmx。我找不到一个有用的.tt文件来生成ObjectContext,所以该部分是手工编写的。因此,这并不完全是我理解的“代码优先”视图,我指的是数据库视图;你知道,不是一张普通的桌子?据我所知,它应该是有效的。。。我一直在用Silverlight编写entity,我过去知道RIA的一切工作原理,但当我不得不切换到WPF时,现在entity的工作原理就不一样了。。。。希望Martin关于使用更高版本的建议将对所有内容进行排序。使用“从数据库更新模型”功能将视图拉入.edmx,不会出现错误。我在正确的属性上设置了键。在DbContext中,生成的dbSet与所有其他表的dbSet相同。要查询数据,我有一个ObjectContext,每个实体都有一个ObjectSet。这就是我遇到麻烦的地方;base.CreateObjectSet(“Stratus_X_TestEntities.CatalogItemSearch”);我给你赏金是因为这个答案是目前为止最有用的。我设法将代码移到EF 6,虽然现在不是一组不工作,而是一组都不工作。同样的错误。我希望错误信息不是那么模糊,有那么多可能的原因!好吧,也许你可以发布一个新问题,这次你可以使用
DbSet
的新代码,并指出你正在使用ef6。