Je travaille actuellement sur mon première application asp.net mvc. J'essaie de boire le kool-aid de tous les exemples de projets que je vois et en essayant d'utiliser le modèle de conception de dépôt.Comment mettre à jour les champs créés et modifiés en utilisant le modèle de conception du référentiel?
J'ai une interface appelée IUserRepository qui ressemble à ce qui suit:
public interface IUserRepository
{
IUser Add(IUser user);
IQueryable<IUser> Fetch();
IUser Update(IUser obj);
void Delete(IUser obj);
}
Mon interface IUser a un tas de propriétés et propriétés pour CreatedBy, CreatedDate, ModifiedBy et ModifiedDate.
Mon UserRepository se présente comme suit:
public class UserRepository : IUserRepository
{
private GimliDataContext db = null;
public UserRepository()
{
db = new GimliDataContext();
}
public UserRepository(string connection)
{
db = new GimliDataContext(connection);
}
public IUser Add(IUser obj)
{
db.Users.InsertOnSubmit((User)obj);
db.SubmitChanges();
return obj;
}
public IQueryable<IUser> Fetch()
{
return db.Users.Select(b => b as IUser);
}
public IUser Update(IUser obj)
{
var user = db.Users.Where(u => u.UserId == obj.UserId).Single();
user.Name = obj.Name;
user.Password = obj.Password;
user.Email = obj.Email;
user.IsLocked = obj.IsLocked;
user.IsDisabled = obj.IsDisabled;
db.SubmitChanges();
return user;
}
public void Delete(IUser obj)
{
var user = db.Users.Where(u => u.UserId == obj.UserId).Single();
db.Users.DeleteOnSubmit(user);
db.SubmitChanges();
}
}
Dans mes applications web actuelles lorsque mes utilisateurs se connectent Je planque mon entreprise principale client sur le thread courant et lorsque les objets de mon entreprise mise à jour je viens utilisateur la propriété Name sur la propriété Identity du directeur d'entreprise actuel et cela fonctionne très bien.
Alors, quelle est ma question? Dois-je faire la même chose avec les méthodes Add ou Update de mon référentiel OU serait-il préférable de passer une référence IUser à l'utilisateur actuel et de récupérer simplement l'UserId à partir de là?
Appréciez toute contribution!
Merci David! Qu'entendez-vous par classe de service? J'utilise un service WCF pour m'interfacer avec le dépôt ... mais je ne sais pas si c'est ce dont vous parlez. – mattruma
De rien. Pensez au service WCF comme votre niveau 'Présentation', vous voudriez toujours avoir une classe de service distincte qui pourrait être utilisée par le service WCF ainsi que d'autres clients non-WCF (gros clients, etc ...). Regardez Domain Driven Design qui vous renseignera sur les services. – David