我在实体模型中添加了一个数据库视图。现在,我正在尝试将一个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“找不到EntitySet名称'Stratus_X_TestEntities.CatalogItemSearch‘”
我知道对于视图,我不需要ObjectSet提供的添加/更新/删除功能。
是否有我应该为此使用的另一种集合类型?
或者,这一错误是否与它的观点完全无关呢?
谢谢
发布于 2015-11-19 18:36:18
我想指出的是,ObjectSet API和ObjectContext API是实体框架的旧API,现在通常不再使用了。
它是实体框架4.0的一部分,那是很久以前的事了(参见维基百科:实体框架历史)。
2011年,实体框架版本4.1发布,并建议从现在开始使用DbSet和DbContext API。实体框架的当前生产准备版本是version 6,version 7正在工作。
我建议您移到实体框架6,您可以使用Nuget:EntityFramework 6.1.3将其安装到Visual项目中
下面是一个文章,其中有一章介绍了DbSet API与旧API相比所带来的差异。看一看“介绍DbContext & DbSet”一章。
发布于 2015-11-16 15:02:25
如果您使用的是CodeFirst,那么始终可以在映射表时映射视图(使用DbSet),然后它就会正常工作。
https://stackoverflow.com/questions/33553123
复制相似问题