2010-05-07 11 views
0

Je suis nouveau dans les ORM et j'ai un nouveau projet que je vais faire dans .Net MVC. Dans la couche modèle, je vais créer mes classes: vidéos et je vais travailler avec des API en tant que couche de données (API YouTube BrightCove &). Par conséquent, je n'ai pas de base de données relationnelle en tant que couche de données.Puis-je utiliser un ORM (comme Subsonic) pour travailler avec une API?

Est-il possible de travailler avec un ORM (comme Subsonic)?

Merci!

+0

ORM = objet ** ** Relational Mapper –

+0

Yeap Je sais, mais je veux un "système" qui traduisent les données de l'Api à mes Objets:. "le Mapper" – Gabrielizalo

+1

Vous pouvez regarder AutoMapper (http://automapper.codeplex.com/). Je ne fais pas de garantie, il fera ce que vous voulez si :) –

Répondre

2

Assurez-vous que ce n'est pas faisable. Ou du moins ce n'est pas l'intention d'un ORM.

Si vous traitez avec une API, vous appelleriez et obtiendriez un résultat oui? ou vous appelleriez et obtiendriez des valeurs des propriétés?

De toute façon, il n'y a rien à quoi l'ORm puisse faire la cartographie. Il n'a aucune idée sur l'appel des api etc. On leur donne des objets qu'ils peuvent interpréter en utilisant la réflexion (je suppose) etc.

Donc je pense que vous aurez besoin de créer un objet vous-même à partir de l'API, auquel cas vous probablement n'ont pas besoin d'un ORm dans ce cas. À moins que vous ne créiez votre modèle d'API dans une couche quelconque, puis que vous utilisiez un ORM pour traduire un modèle utilisé par l'application. Ce serait une meilleure solution car si le modèle de l'API change, les modifications apportées à votre code seront minimes.

1

Il existe un .NET API pour Youtube qui fournit des classes pour les vidéos ainsi que des méthodes d'accès aux données pour obtenir des données de Youtube. Je pense que, sauf si vous avez une bonne raison de rouler les vôtres, vous pourriez envisager d'utiliser leur API .NET et d'utiliser ou d'étendre directement les classes qu'ils fournissent. Si vous voulez extraire l'accès aux données, vous pouvez créer votre propre classe Video avec les propriétés dont vous avez besoin et implémenter votre propre référentiel vidéo qui utilise l'API de Youtube pour hydrater les instances de votre classe.

0

Dans le code SubSonic (il suffit de le télécharger depuis github) il existe une méthode soignée dans la classe SqlQuery appelée "ExcecuteTypedList()".

Il s'agit simplement d'une petite méthode qui utilise la réflexion pour mapper un résultat d'un DataReader à une classe générique. C'est simple mais génial.

Vous pouvez regarder le code et le modifier par vous-même pour répondre à vos besoins.

Il fait essentiellement ce qui suit si vous appelez ExecuteTypedList()

  • créer une instance de votre classe
  • pour le paramètre « Test », il tente de charger la propriété « Test de l'instance de classe
  • Définit la valeur