WPF实体无法创建视图的ObjectSet?

时间:2015-11-05 19:27:16

标签: c# wpf entity-framework

我已将数据库视图添加到实体模型中。现在我正在尝试将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<CatalogItemSearch> _CatalogItemSearch;
public ObjectSet<CatalogItemSearch> CatalogItemSearch
{
    get
    {
        if ((_CatalogItemSearch == null))
        {
            _CatalogItemSearch = base.CreateObjectSet<CatalogItemSearch>("Stratus_X_TestEntities.CatalogItemSearch");
        }
        return _CatalogItemSearch;
    }
}

但是当代码运行时,我得到一个例外:

  

System.InvalidOperationException&#34; EntitySet名称   &#39; Stratus_X_TestEntities.CatalogItemSearch&#39;无法找到&#34;

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

我应该使用替代的Set类型吗?

或者这个错误可能来自与其观点完全无关的事情吗?

感谢

2 个答案:

答案 0 :(得分:2)

我想指出,ObjectSet API和ObjectContext API是实体框架的旧API,现在通常不再使用。

它是很久以前的Entity framework 4.0的一部分(见Wikipedia: Entity Framework history)。

2011年,实体框架版本4.1发布,并建议使用DbSetDbContext API,而不是从现在开始。 实体框架的当前生产就绪版本是版本6,正在开发版本7。

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

以下是article,其中有一章介绍DbSet API与旧API相比的差异。看一下“介绍DbContext&amp; DbSet”一章。

答案 1 :(得分:1)

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