Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF Entity can't create an ObjectSet of a view?

I have added a database view to my entity model. Now I am trying to put an ObjectSet into my ObjectContext so I can access the view in my application.

For regular tables my ObjectSet would look like this:

private ObjectSet<StarVendor> _StarVendor;
public ObjectSet<StarVendor> StarVendor
{
    get
    {
        if ((_StarVendor == null))
        {
            _StarVendor = base.CreateObjectSet<StarVendor>("Stratus_X_TestEntities.StarVendors");
        }
         return _StarVendor;
    }
}

So I did the same for my View:

private ObjectSet<CatalogItemSearch> _CatalogItemSearch;
public ObjectSet<CatalogItemSearch> CatalogItemSearch
{
    get
    {
        if ((_CatalogItemSearch == null))
        {
            _CatalogItemSearch = base.CreateObjectSet<CatalogItemSearch>("Stratus_X_TestEntities.CatalogItemSearch");
        }
        return _CatalogItemSearch;
    }
}

But when the code runs I get an exception:

System.InvalidOperationException "The EntitySet name 'Stratus_X_TestEntities.CatalogItemSearch' could not be found"

I know that for a View I don't need the add/update/delete functionality that ObjectSet provides.

Is there an alternative Set type that I should be using for this?

or could this error be from something totally unrelated to the fact that its a view?

thanks

like image 985
Shaboboo Avatar asked Oct 19 '22 22:10

Shaboboo


2 Answers

I would like to point out that the ObjectSet API along with the ObjectContext API is the old API of the Entity Framework which usually is no longer used today.

It was part of Entity framework 4.0, that was a long time ago (see Wikipedia: Entity Framework history).

In 2011 Entity framework version 4.1 was released, and recommended using the DbSet and DbContext API instead from now on. The current production ready version of entity framwork is version 6, and version 7 is being worked on.

I recommend you to move to Entity framework 6 which you can install into your Visual Studio project using Nuget: EntityFramework 6.1.3

Here is an article which has a chapter about the differences the DbSet API brings compared to the old API. Take a look at the chapter "Introducing DbContext & DbSet".

like image 114
Martin Avatar answered Oct 21 '22 17:10

Martin


If you are using CodeFirst you can always map the view as you map a table (with a DbSet) and then it should work.

like image 38
bubi Avatar answered Oct 21 '22 16:10

bubi