ASP.NET MVC (MVC2) Les meilleures pratiques lors de l'insertion / Mise à jour des données en utilisant LINQ to SQL couches et référentiel

StackOverflow https://stackoverflow.com/questions/3105665

Question

Je suis un peu une énigme ici et j'espère que certains d'entre vous gourou de remplissage d'aide dans les espaces vides.

La situation dans laquelle je suis actuellement face est quant à ma table « Utilisateurs » et ma table « OpenID ». Mon application permet à un utilisateur d'avoir plusieurs OpenID de, donc je garde une trace d'eux dans un tableau distinct.

  

Utilisateurs   ID
  Nom d'utilisateur

     

OpenID   ID
  UserID
  Claimedidentifier

J'ai un dépôt CRUD pour chaque table, et j'ai aussi un service que les interfaces avec le référentiel (un service par repo).

La question que j'est en ce qui concerne l'insertion d'un nouvel utilisateur (depuis la mise à jour suivra le même principe). Voici les options que j'ai dans ma tête.

  1. Demandez à la UserService insérer un nouvel utilisateur, récupérer l'ID de l'utilisateur, puis insérez un nouveau en utilisant le code d'utilisateur OpenID
  2. Avoir la UserService envoyer le nouvel utilisateur ainsi que le ClaimedIdentifier au UserRepository, et ont le référentiel insert l'utilisateur et l'OpenID (cela ne correspond pas à la méthode de CRUD très bien)
  3. Création d'une vue à la fois la table utilisateur un tableau OpenID, créez un UsersOpenIDRepository et un UsersOpenIDService, puis insérez à la vue.

Toutes les autres pensées ou suggestions au-delà de ce que je peux penser sera grandement appréciée.

S'il vous plaît noter que je ne l'utilise NHibernate dans lequel je peux modeler mon domaine mais je l'entends. Je suis coller à LINQ to SQL sur ce projet,

Était-ce utile?

La solution

Dans mon expérience Linq2SQL ne correspond pas à la méthode de CRUD très bien de toute façon. Faire sauter Convient-il à des moyens par trop de cerceaux pour être vraiment la peine. Le problème que vous décrivez est même pas une seule -. Il est encore pire quand la mise à jour des entités

Par conséquent, j'ai opté pour la solution 2 (insérer les deux entités dans le usersrepostory) dans mon projet en cours.

J'ai donné aussi sur les méthodes de mise à jour pour les dépôts. Unstead mes dépôts ont simplement une méthode SubmitChanges qui doit être appelé après que toutes les mises à jour sont effectuées sur les entités chargées. Tous les dépôts créés dans la même demande web partagent la même DataContext, donc il ne compte pas vraiment qui je SubmitChanges d'appel du référentiel sur. Ce n'est pas CRUD, mais il se prête beaucoup mieux à la façon d'effectuer des mises à jour LINQ2SQL de base de données.

Si vous voulez vraiment absolument CRUD pur, vous pourriez vouloir vérifier EF avec le modèle de génération d'entité poco.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top