Ponowne pytanie o model w MVC

CI
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0

Witam, to znowu ja i znowu o MVC. Czy taki model jest poprawny?

Kopiuj
public class Person
{
public string name { get; set; }
public string surname { get; set; }

public Person(string name, string surname)
{
this.name=name;
this.surname=surname;
}

void Save(Client client)
{
//sql
}

void Delete(Client client)
{
//sql
}

object[] ClientsWithCars() //Czy tu tak można? ( czy tak wypada?? )
{
//sql
}
} 

Głównie chodzi mi o metodę ClientsWithCars, która zwróci pola z kilku różnych tabel.

edytowany 2x, ostatnio: Ciekawski
n0name_l
z czystej ciekawosci zapytam, co to ma z mvc wspolnego?
CI
Model chyba jednak ma coś wspólnego nie? Skoro wiesz to napisz.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:9 minut
  • Lokalizacja:Wrocław
0

To nie tyle Model co Active Record: http://www.martinfowler.com/eaaCatalog/activeRecord.html Niby jedno drugiego nie wyklucza, ale...

Model w MVC, w sensie ten model na którym operują kontrolery, i którym typowane są widoki, to dla mnie klasa typu DTO - zawierająca jedynie właściwości i praktycznie żadnej logiki. Operacje bazodanowe lepiej upchnąć w innych klasach.

edytowany 1x, ostatnio: somekind
CI
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0

Im więcej pytam tym mniej wiem.... Operacje w osobnej klasie, masz na myśli np:

Kopiuj
public class Operations
{
void Save(Client client);
object[] ClientsAndCarsById(int id);
}
edytowany 1x, ostatnio: Ciekawski
WE
  • Rejestracja:około 14 lat
  • Ostatnio:około 12 lat
0

Może mieć w składowych modelu metody operujące na strukturach danych. Przynajmniej tak mi się wydaję.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:9 minut
  • Lokalizacja:Wrocław
0
Ciekawski napisał(a):

Im więcej pytam tym mniej wiem.... Operacje w osobnej klasie, masz na myśli np:

Kopiuj
public class Operations
{
void Save(Client client);
object[] ClientsAndCarsById(int id);
}

Czemu object[]? Tak się nie robi.

Mam na myśli oddzielenie modelu od operacji na nim wykonywanych... Operacje na modelu możesz np. wykonywać w kontrolerach. W najprostszym przypadku tam możesz wołać bezpośrednio warstwę dostępu do danych.

Active Record to wzorzec moim zdaniem niezbyt przyjazny, a po drugie stosuje się go do encji (czyli tych obiektów, które siedzą w bazie), a nie do modeli (czyli tych obiektów, które są wyświetlane użytkownikowi).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.