2010-01-20 5 views
0

Je construis une application mvc asp.net pour les utilisateurs de participer à un concours de rédaction. J'ai une table Essay dans SQL Server 2005. J'ai créé mes modèles de domaine en faisant glisser sur les tables dans l'explorateur de serveur et en sauvegardant la mise en page en tant que, ce que j'ai appelé DAL.dbml.Où mettre le code spécifique au modèle lors de l'utilisation du concepteur .dbml?

J'essaie maintenant de mettre en œuvre la validation de champ de saisie dans la couche de gestion en utilisant les méthodes mentionnées au chapitre 11 de Pro ASP.NET MVC Framework par Steven Sanderson. Mais, l'auteur n'a pas créé ses modèles comme je suis, donc je ne sais pas où placer mon code spécifique au modèle.

J'ai envisagé de le placer dans le fichier DAL.designer.cs généré automatiquement, mais cela semble problématique.

J'ai également essayé de créer une nouvelle classe, EssayRequired.cs, où j'ai fait EssayRequired étendre Essay. Cela a presque fonctionné.

Il a montré avec succès toutes les erreurs de validation.

Mais quand vient le temps de sauver réellement l'enregistrement:

EssayTable.Context.Refresh(RefreshMode.KeepCurrentValues, essay); 
EssayTable.Context.SubmitChanges(); 

Je reçois cette erreur:

Le type 'DomainModel.Entities.EssayRequired' est pas mis en correspondance comme une table.

Des idées sur ce que je devrais faire maintenant? Y at-il un meilleur endroit pour mettre le code spécifique au domaine qui ne sera pas effacé si la table db change et je dois supprimer et faire glisser à nouveau la table plus?

Ou existe-t-il un moyen de dire à l'application que l'objet EssayRequired doit atterrir dans la table Essay?

Merci, Scott

Répondre

0

Vous pouvez créer un partial Essay class dans le même espace que le fichier dbml.

public partial class Essay 
{ 
    partial void OnCreated() 
    { 
     // handle additional stuff on creation, for instance. 
    } 
} 
Questions connexes