Je développe une logiciel où j'ai quelques entités telles que:architecture en couches Question
public class Workspace
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual List<Playground> Playground { get; set; }
public virtual List<Workspace> Children { get; set; }
public virtual List<Member> Members { get; set; }
public virtual Workspace Parent { get; set; }
}
public class Playground
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual List<Service> Services { get; set; }
public virtual Workspace Workspace { get; set; }
}
public class Service
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual Playground Playground { get; set; }
}
Ce sont mes objets EF4 POCO. J'utilise le modèle de référentiel et l'interface suivante:
public interface IRepository<T>
{
void Add(T entity);
void Delete(T entity);
IEnumerable<T> Get(Expression<Func<T, bool>> expression);
IEnumerable<T> Get();
void Attach(T entity);
int Save();
}
Les référentiels ont un ObjectContext interne. J'ai un UnitOfWork qui contient des instances de mes dépôts et est responsable d'enregistrer les modifications qui leur sont apportées.
Est-ce que je le fais bien jusqu'à maintenant?
Je suis une couche en œuvre logique métier comme ceci:
public class DomainWorkspaceService : DomainServiceBase
{
public DomainWorkspaceService(Workspace workspace)
: base(UnitOfWorkFactory.GetInstance())
{
}
public void Create(Workspace workspace)
{
UoW.GetRepository<Workspace>().Add(workspace);
}
public void Delete(Workspace workspace)
{
var pservice = new DomainPlaygroundService();
foreach (var playground in workspace.Playground)
pservice.Delete(playground);
foreach (var child in workspace.Children)
Delete(child);
}
}
Maintenant, je ne suis pas sûr que je vais dans la bonne direction. Mes Poços sont (seront) responsable de la validation et de me permettre de faire quelque chose comme
SomeWorkspace.Children.Add(new Workspace {...});
Étant donné que ces objets sont associés à un contexte, quand je les sauvegarde seront les modifications apportées aux collections sont enregistrées aussi dans la base de données ?
En outre, je veux que mes terrains de jeu ne peuvent pas être créés sans un espace de travail et des services sans terrain de jeu. Où dois-je créer et supprimer les?
Merci.
Si vous ne voulez pas forcer le terrain de jeu à être construit avec un espace de travail - ajoutez des constructeurs qui les exigent. La même chose pour les services. –
Oui. Je vous remercie. – codegarten