Hej.
Postanowiłem złapać za WPFa z wykorzystaniem MVVM. Może opisze problem na swoim przykładzie.
Stworzyłem sobie solucję, a w niej trzy projekty (View, ViewModel, Model). View dostał referencję do ViewModel, a ViewModel do Modelu. Do projektu Model został dodany *.edmx z prostą bazą składającą się z jednej tabeli. Po dodaniu pięknie wygenerowała się klasa reprezentująca tabele i connectionString (poprawny). W widoku dodałem kontrolkę dataGrid żeby jakoś przedstawić te dane z tabeli. Do MainWindow zbindowałem pod DataContext swój ViewModel, a następnie pod dataGrid chciałem podpiąć swoją ObservableCollection z ViewModelu - niestety nie widać jej tam (dopiero po dodaniu referencji do modelu ona się pojawia czego chyba powinienem uniknąć bo widok nie powinien o nim wiedzieć[?]). Wydaje mi się, że jest to spowodowane przez to, że mój widok bez referencji do modelu nie zna typu tej kolekcji, która powiedzmy składa się z obiektów User. W tym miejscu pytanie - powinienem w części ViewModel stworzyć sobie jakąś klasę, która będzie reprezentować te dane z modelu w widoku tak żeby uniknąć referencji View->Model? Kolejne pytanie - gdzie powinny znaleźć się zapytania do bazy danych? Z tego co czytałem powinno to wszystko być w modelu tylko w jaki sposób to wszystko poprawnie okodzić? W tej chwili jest to dla mnie dość nieintuicyjne i całą logikę upchałbym w ViewModelu, który łączy się z bazą i z wykorzystaniem modelu pobiera sobie odpowiednie dane i dostosowuje je do widoku. Ostatnie pytanie - upychając wszystko w jednym projekcie udało mi się wyrzucić na kontrolkę informację z tabeli natomiast cały czas mam błąd (który pojawia się również, gdy solucja jest podzielona na 3 projekty): No connection string named "AccountsDBEntities" could be found in the application config file. Oczywiście wszystko jest na swoim miejscu:

App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  **<connectionStrings>
    <add name="AccountsDBEntities" connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=PCName\DBSERVER;initial catalog=AccountsDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>**
</configuration> 

Konstruktor w moim DBContext.cs:

 
       public AccountsDBEntities()
            : base("name=AccountsDBEntities")
        {
        } 

Będę bardzo wdzięczny za rozjaśnienie mi tematu i ogólnie koncepcji MVVM najlepiej na jakimś przykładzie. Z góry dzięki za pomoc :) Jeżeli będzie trzeba wrzucę cały kod :)