我已将数据库视图添加到实体模型中。现在我正在尝试将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类型吗?
或者这个错误可能来自与其观点完全无关的事情吗?
感谢
答案 0 :(得分:2)
我想指出,ObjectSet
API和ObjectContext
API是实体框架的旧API,现在通常不再使用。
它是很久以前的Entity framework 4.0的一部分(见Wikipedia: Entity Framework history)。
2011年,实体框架版本4.1发布,并建议使用DbSet
和DbContext
API,而不是从现在开始。
实体框架的当前生产就绪版本是版本6,正在开发版本7。
我建议您转到Entity framework 6,您可以使用Nuget将其安装到Visual Studio项目中:EntityFramework 6.1.3
以下是article,其中有一章介绍DbSet
API与旧API相比的差异。看一下“介绍DbContext&amp; DbSet”一章。
答案 1 :(得分:1)
如果您正在使用CodeFirst,您可以在映射表(使用DbSet)时始终映射视图,然后它应该可以工作。