Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8785713
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T21:26:14+00:00 2026-06-13T21:26:14+00:00

I’m working on project in WPF , using local database (via SQL Express )

  • 0

I’m working on project in WPF, using local database (via SQL Express) and Entity Framework as a ORM.

I want to implement as many ViewModels as View classes. Kind of 1 to 1 relation, I’ve heard that’s a good way to implement MVVM (if you don’t agree, please share why). My vision of this is that every ViewModel serve its View (ie. sharing some data from database provided by Model layer).

So every View has its ViewModel which is kind of servant. 😉

During implementing this conception I came across the problem… Let’s assume that at least 2 ViewModels want to get recent list of all the customers stored in database.

What would I do in this case? I would have to add this code to all of these ViewModels (against DRY):

public ObservableCollection<Customer> Customers;

private ObservableCollection<Customer> GetAllCustomers()
{
    var oc = new ObservableCollection<Customer>();

    using (var db = new MyDbContext())
    {
        var query = from b in db.Customers
                    orderby b.Surname
                    select b;

        foreach (var customer in query)
        {
            oc.Add(customer);
        }
    }

    return oc;
}

or (alternatively) I would make some static FooClass with the same code I wrote above, but singed as static. It’s not very clever because such a FooClass would be big pile of mess after some time.

I can’t find any smarter solution. I’m sure you know how I should code it in clever way. So please help me. How should I provide the same functionality to many ViewModels?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T21:26:15+00:00Added an answer on June 13, 2026 at 9:26 pm

    You should abstract your data access in the consuming code into some layer that allows for your specific data access and/or indirection. A simple breakdown is to take the custom queries that you have, place them in an object and reference that object in your different viewmodels.

    Below is an oversimplified example that leaves room for improvement but should give you a general idea, not sure how practical the viewmodel method is as below either but again providing an example for the stated code.

    public class DataAccess {
      public IEnumerable<Customer> GetCustomers() {
        using (var db = new MyDbContext())
        {
            var query = from b in db.Customers
                        orderby b.Surname
                        select b;
    
            return query.ToList();
        }
      }
    }
    

    …

    private ObservableCollection<Customer> GetAllCustomers()
    {
        var customers = new DataAccess().GetCustomers();
        return new ObservableCollection<Customer>(customers);
    }
    

    Along with this example you would probably want to split out DataAccess into aggregate root classes that deal with specific sets of data and can handle query criteria passed by the client, there are also other considerations such as not allowing the consumer to consume data entities but rather DTOs or domain objects and layers for specific business logic as well. The long and short of it is I wouldn’t recommend accessing your EF data context directly from your viewmodels unless this is just toy/prototype code.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let's say I'm outputting a post title and in our database, it's Hello Y&#8217;all
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I want to count how many characters a certain string has in PHP, but
I am reading a book about Javascript and jQuery and using one of the
I want use html5's new tag to play a wav file (currently only supported
I'm using v2.0 of ClassTextile.php, with the following call: $testimonial_text = $textile->TextileRestricted($_POST['testimonial']); ... and
I have a French site that I want to parse, but am running into
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.