Dapper und DAL Wo muss ich meine Validierung platzieren?

dapper data-access-layer

Frage

Ich starte mit meinem ersten Dapper Dal Projekt.

Ich habe drei Projekte: - Website (MVC) - DataLayer (Dapper) - Model (Poco Classes)

Ich möchte meinem Modell eine Validierung hinzufügen, möchte aber auch saubere Poco-Klassen für meine Datenebene verwenden. Mein Datenlayer verwendet Dapper, um meine Poco-Klassen der Datenbank zuzuordnen.

Ich habe das Internet durchsucht, aber ich kann keine gute Antwort finden.

Meine Frage ist: Wo füge ich meine Validierung hinzu? - In einem separaten Projekt mit Klassen, die meine Poco-Klassen erweitern oder gibt es einen anderen Weg?

Akzeptierte Antwort

Wenn Sie eine saubere Trennung zwischen Ihren DAL-Klassen und Ihren MVC-Klassen wünschen, können Sie genau das tun, indem Sie beispielsweise ViewModels in Ihrem MVC-Projekt verwenden. Das ViewModel hätte die Eigenschaften und Validierungen, die am besten mit dem funktionieren, was Sie im Browser darstellen. Ihr Controller würde für die Zuordnung der Daten zwischen den DAL-Klassen und den ViewModels zuständig sein. Automapper ist ein sehr gutes Werkzeug für genau das.

Es würde ein bisschen wie das Folgende aussehen:

DAL:

public class MyDapperClass
{
    public int Id { get; set; }
    public string SomeProperty { get; set; }
}

Ansichtsmodell:

public class MyViewModelClass
{
    public int Id { get; set; }

    [StringLength(50),Required]
    public string SomeProperty { get; set; }
}

Regler:

// using AutoMapper;
public class MyController : Controller
{
    public MyController()
    {
        // Set up AutoMapper to be able to map your class
        Mapper.CreateMap<MyDapperClass, MyViewModelClass>();
    }

    public ActionResult MyAction()
    {
        var dalObject = DAL.GetObject();
        var viewModel = Mapper.Map<MyViewModelClass>(dalObject);

        return View(viewModel);
    }
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum