1
votes

I have a classlibrary which contains all the Database Manipulation Logic. The other Project in my ProjectSolution is my WPF Core app. I have created my Student Model there. In my Mainwindow.xaml.cs i instantiate my DataAccess Class. Here i have the dependency to my class library which contains this Data Access Class. Now i want insert some Dummy Data into my Database. (I use Dapper Micro ORM) Instead of hardcoding the sqlStatement, or using a stored procedure, my idea was to run through a List of Students and insert them into my Table. But for this i would need the Dependency to the Student in my Data Access Classlibrary. And there is the Problem. i want my Data Access decoupled from my Wpf Core app. Anyone a Idea? Btw im new to programming.

2

2 Answers

0
votes

It's common to have a Core project with entities and business logic.

Your WPF project (i.e. presentation layer), and all other projects including DAL would reference this Core App.


                     --------
                     | Core |    <- DAL
                     --------    <- WPF App

A more traditional thing to do is something like:


              DAL  <-  Core (Business Logic)  <-  App

Microsoft maintains a few sample projects with real-world examples that you can refer to. Here's a UWP example that takes the traditional route: https://github.com/microsoft/InventorySample In that example as of 47d779a, the Inventory.Data project is your DAL, and the Inventory.ViewModels is the "Core" project.

0
votes

You should look up unit of work pattern, Repository pattern. Then you might want to look up SOLID -> 5 principles in one.

Combine all principles and patterns, should give something extremely solid.

If you are looking for something a little more concrete:

public interface ICreateStudent

   void CreateStudent(IStudent student){
       ...create DAL-student from interface, store created obj.

   }

//Generate this a partial class for implementing the IStudent interface, if your code is being 
//autogenerated by dapper. 
public partial class WPFStudent : IStudent
{

}

Then you only need to reference the interface and not the object itself. Also, maybe look up the term "Composition root".