Cześć,
Powinieneś poczytać na temat MVC i zastosować się właśnie do tego.
Możesz trzymać modele, view i controler w tym samym projekcie - najważniejsze aby było to odpowiednio podzielone za pomocą folderów. Jeśli jednak chcesz stworzyć część kodu jako DLL, to ta dll'ka powinna być w osobnym projekcie (każda dll'ka osobno).
Odradzam ci używanie Entity Framework'a do połączenia się z bazą danych z tak małą wiedzą. Jako alternatywę polecam ściągnięcie biblioteki MySQL do łączenia z bazą danych z NuGet'a lub użycie MicrosoftSQL.
Powinno to wyglądać tak:
Modele: kontenery na dane, również te dla danych ściągniętych z bazy danych lub wrzucanych do bazy danych.
View: WPF - tylko i wyłącznie prezentacja danych.
Controler: logika - co i jak ma działać, pobieranie i wrzucanie do bazy danych, wyrzucanie gotowych danych do View oraz odbieranie eventów od View, kontrola poprawności danych.
Repositories: zawiera się w "Controler" i polega na manipulacji modelami (tj. zmiana danych trzymanych w modelach i kontrola, zgodności danych wrzucanych do modeli), operacje na modelach.
Ogólnie powinieneś podzielić problem na jak najwięcej małych problemów (małych klas). Pamiętaj jedna metoda wykonuje jedną operację abstrakcyjną, a jedna klasa rozwiązuje jeden problem (np. pierwsza klasa łączy się z bazą danych, druga klasa kontroluje przepływ danych do i z bazy danych, trzecia klasa zawiera obie klasy i wykonuje już zadania bardziej ogólne - tj. inicjalizuje połączenie za pomocą klasy pierwszej i kiedy ją zawołamy wrzucany dane do bazy lub wyciąga z bazy za pomocą klasy drugiej).
Pozdrawiam,
Tomek