Question

Je comprends Subsonic 3.0 est le dernier et le plus grand, et je comprends Subsonic 3.0 a T4 modèles.

Mais Subsonic 3.0 n'est pas rétrocompatible avec Subsonic 2.2, ce qui signifie, mon projet avec des centaines de fichiers de code écrit dans la langue subsonique 2.2 de requête ne fonctionnera pas dans Subsonic 3.0.

Ma question: Y at-il des modèles de quelqu'un a t4 pour Subsonic 2.2 pour remplacer les fichiers générés crée. Mon DB est énorme et la quantité de fichiers généré est d'obtenir un fou bits.

Quelqu'un at-il fait cette capacité ou quelqu'un a fait un outil personnalisé pour aider le chemin de mise à niveau?

Merci pour la lecture

Était-ce utile?

La solution

SubSonic 3 a été un énorme recodage du noyau, en utilisant de nouvelles techniques telles que T4 au lieu de ses propres modèles et fournir un moteur de requête LINQ.

Mais la plupart des bonnes vieilles fonctionnalités, comme l'outil de recherche, sont encore disponibles.

Si vous avez ceci:

var p = new Product();
p.ProductName = "new product";
p.Save();

ou ce

var p = DB.Select()
         .From<Product>()
         .Where(Product.ProductCode).IsEqualTo("1234")
         .ExecuteSingle<Product>();

ce sera toujours travailler avec SubSonic3

Si vous êtes assez courageux ma suggestion pour un chemin de mise à niveau serait ceci:

  • Assurez-vous que votre DAL utilise "generatenullableproperties = true"
  • Sinon recréer et corriger possibles compilateur / exceptions d'exécution:

    if (p.QuantityHasValue) p.Total = p.Quantity * p.Price;
    // changes to
    if (p.Quantity.HasValue) p.Total = p.Quantity * p.Price;
    
  • Modifier l'espace de noms que vous avez généré le fichier de Your.Namespace.DAL à Your.Namespace.LegacyDAL

  • créer le DAL avec les modèles ActiveRecord dans votre ancien espace de noms
  • Si vous avez utilisé InlineQuery, le nom de classe changé CodingHorror
  • corriger toutes les erreurs du compilateur (peut-être les noms de propriété générés / types diffèrent un peu)
  • requêtes rewrite si nécessaire
  • si vous utilisez les migrations subsoniques: bâton avec eux car il n'y a pas de remplacement de coequal dans SubSonic3
  • test, test, test !!! jusqu'à ce que tout fonctionne bien
  • faire usage de l'subsonic3 propose (comme LINQ) uniquement pour les nouvelles tâches
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top