In ASP.NET MVC Core le operazioni CRUD seguono il modello di deposito?

0

In alcuni framework MVC ho usato il Modello con il metodo e SQL nel Modello in modo che se si chiama il controller, invoca un metodo sulla classe del modello (ad esempio Prodotti) e restituisce i dati. In ASP.NET MVC Core, da quello che ho visto finora, c'è un file separato oltre al modello per fare la logica. Uso due classi? Appaiono (quelli che ho letto) usare il modello di deposito.

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public int Quantity { get; set; }
    public double Price { get; set; }
}

Questa è una classe. Dove vanno i metodi per ottenere i dati? Il modello di archivio è necessario o è una "migliore pratica"?

public interface IStoreRepository
{
    //CRUD signatures
}

public ProductRepository : IStoreRepository
{

    //CRUD implementation
}
....

public IActionResult Products()
{
//A controller
//Call method in ProductRepository.GetAll or the like
}

Se è importante, sto tentando di usare Dapper, non EF.

    
posta johnny 10.01.2017 - 19:42
fonte

1 risposta

2

ASP.NET MVC non ha molto da dire su ciò che stai chiedendo. Tutto ciò che hai descritto fa parte del Modello; il design del Modello dipende interamente da te.

Tuttavia, puoi ottenere qualche rudimentale guida dal sito ASP.NET. Se ci passi dentro, troverai il codice che assomiglia a questo:

public class MoviesController : Controller
{
    private readonly ApplicationDbContext _context;

    public MoviesController(ApplicationDbContext context)
    {
        _context = context;
    }

    // GET: Movies
    public async Task<IActionResult> Index()
    {
        return View(await _context.Movie.ToListAsync());
    }
}

Il che è tanto semplice quanto diventa. Come puoi vedere, i dati per la vista restituita vengono disegnati direttamente da un oggetto DBContext di Entity Framework.

Nelle applicazioni più grandi, probabilmente vorrai un approccio più strutturato al tuo Modello. Qualcosa del genere:

DATABASE <=> Entity Framework <=> Service Layer <=> Controller <=> ViewModel <=> View

Dove il Service Layer espone metodi specifici del dominio aziendale, piuttosto che CRUD. Ma ancora una volta, niente di tutto ciò ha davvero molto a che fare con ASP.NET MVC.

    
risposta data 10.01.2017 - 22:03
fonte

Leggi altre domande sui tag