thats la manière josh smith fait l'add-a-client procédure:Appeler les méthodes CRUD du référentiel depuis le Controller ou ViewModel?
**CustomerViewModel**.cs:
public void Save()
{
_customerRepository.AddCustomer(_customer);
}
**CustomerRepository**.cs:
public void AddCustomer(Customer customer)
{
//...
_customers.Add(customer);
if (this.CustomerAdded != null)
this.CustomerAdded(this, new CustomerAddedEventArgs(customer));
}
**AllCustomersViewModel**.cs(acts as Controller):
void OnCustomerAddedToRepository(object sender, CustomerAddedEventArgs e)
{
var viewModel = new CustomerViewModel(e.NewCustomer, _customerRepository);
this.AllCustomers.Add(viewModel);
}
fort texte wouldn il mieux le faire ?:
**CustomerViewModel**.cs:
public void Save()
{
if (this.CustomerAdded != null)
this.CustomerAdded(this, new CustomerAddedEventArgs(customer));
}
AllCustomersViewModel.cs(acts as Controller):
void OnCustomer**ADDING**ToRepository(object sender, CustomerAddedEventArgs e)
{
_customerRepository.Add(e.NewCustomer);
var viewModel = new CustomerViewModel(e.NewCustomer);
this.AllCustomers.Add(viewModel);
}
Cette étape le CustomerViewModel.cs pourrait également être dans le contrôleur parce que le contrôleur détient 1/toutes les références au service/référentiel du client/produit/ordre, etc ...
if (this.IsNewCustomer)
_customerRepository.AddCustomer(_customer);
Lorsque j'ai encore un Order/ProductViewModel fonctionnant pour le même contrôleur, j'ai 3 instances du référentiel. Si le référentiel est dans le Ctor du contrôleur, je n'ai qu'une seule instance.
Avec l'architecture de josh smith, vous disposez d'une customerRepo dans le contrôleur et CustomerViewModel. Avec mon idée, vous avez seulement un customerRepo dans le contrôleur ET la méthode Save/Add de CustomerViewModel pourrait être souscrite à la méthode Controllers OnAddCustomer.
Pourquoi Josh Smith a pris un
public event EventHandler<CustomerAddedEventArgs> CustomerAdded;
et non un
simple public Action<Customer> AddDocumentDelegate;
Que pensez-vous? Voyez-vous un inconvénient dans mon idée?
je toujours pensé à nouveau et voir une faille dans mon idée: Avoir 5000 CustomerViewModel objets chacun faisant en Ajouter/Enregistrer la méthode: OnCustomerAdd (client), de cette façon, je dois déclarer 5000 événements erhm ... dois lire vos liens LOL maintenant je suis confus ... – Elisabeth
Oui .. faites vos avis appeler les méthodes appropriées sur le contrôleur. Ainsi, lorsque l'action de l'utilisateur vous invite à enregistrer, il suffit d'appeler save sur le contrôleur à partir de la vue, puis le contrôleur fera l'accès aux données. –
juste ce que j'ai observé: josh smith a une méthode AddCustomer (enregistrer) dans le CustomerViewModel, WAF (WPF Application Framework) a la méthode AddCustomer/AddBook dans le BookController. Une vue est juste un modèle de la vue, donc il doit être passiv concernant l'inductance de la persistance des données etc ... c'est le travail du contrôleur. Hm semble que je dois avoir un regard plus profond sur WAF grande application mais pleine d'architecture: P – Elisabeth