Eh bien, je voudrais op personnellement pour Plain Old ClR objets POCO pour le modèle d'affaires.
using System.ComponentModel.DataAnnotations;
L'espace de noms ci-dessus apporte également la validation à vos objets. Il y a le bloc de validation d'application d'entreprise, mais je n'ai pas trouvé de moyen de l'intégrer dans le client Silverlight. Mais l'avantage est que vous pouvez créer votre modèle d'entreprise et décorer avec DataAnnotations, puis réutiliser ce modèle d'entreprise.
Il serait tout droit sorti de la boîte avec NHibernate, mais pas EF, car cela ne permet pas de POCO. Linq-to_Sql, je crois, mais vous auriez besoin soit d'utiliser des fichiers de mapping en utilisant SQL Metal ou des méta-données spécifiques de Linq-To_Sql.
L'un des problèmes, et non des problèmes, mais plutôt des scénarios que j'ai rencontrés est que j'utilise WCF pour communiquer entre Silverlight et le serveur. Cela vous donne une base de code générée pour le service, et en modifiant cela signifie que toutes les modifications seront perdues lors de la prochaine mise à jour du service. L'utilisation de MetaDataType est quelque chose que j'aimerais aussi voir disponible dans Silverlight car cela signifie que vous pouvez décorer les classes générées sans risque de perdre votre travail lors de la régénération. Si vous travaillez .NET vers .NET sur le WCF vous gagnez bien plus de fonctionnalités mais si vous avez besoin que la validation et le retour des erreurs soient interopérables, j'ai une classe de réponse de base qui contient des propriétés HasErrors et Error [] . Je fais actuellement les suivantes:
Silverlight: - Generated service WCF Proxy - Un ViewModel qui enveloppe les classes de service proxy interceptant les setters et getters - Appliquer la validation côté client à l'aide du System.ComponentModel.DataAnnotations
Business Model: - J'utilise POCO avec NHibernate - J'utilise la validation des applications d'entreprise Bloc - J'ai une base de classe Domaine avec propriétés hasErrors et erreurs
WCF: - Je suis à l'aide DTO à l'aide d'une demande et la réponse à savoir
AddClientResponse AddClient(AddClientRequest request)
Silverlight utilise le service WCF tout en services WCF consomme un dépôt qui utilise la couche d'affaires et d'accès aux données. Avec ce qui précède, je peux déployer avec un client flex, par exemple, et si je ne gère pas la validation de données du côté du client Flex, le client recevra toujours des erreurs dans la classe de réponse de base. Il doit ensuite effectuer une validation côté client ou gérer les erreurs renvoyées par le serveur. Côté client ofcourse enregistre le roundtrip.
[DataContract]
public class BaseResponse
{
[DataMember]
public Error[] Errors { get; set; }
[DataMember]
public Boolean HasErrors { get; set; }
}
Espérons que cela aide!
Je suis sur la quête du savoir moi-même comme toujours lol :-)
Andrew
Merci pour la réponse. J'ai commencé le chemin des annotations dans la version bêta, mais pour une raison quelconque, il a été retiré de la version. J'espère que la version des services de RIA remettra ça. J'étais curieux de savoir ce que les gens font en attendant. Il semble également que la version 2 de MVC va aussi le chemin des annotations via les classes Meta helper. La validation côté service est facile via les nombreuses options disponibles. Le côté client (c'est-à-dire dès qu'ils sont désactivés) semble être un processus manuel en ce moment pour toutes les options d'interface utilisateur. Le framework xVal semble cependant aider avec MVC. –