Je suis très à l'aise avec VB et j'ai un très gros projet que je dois faire. J'ai rencontré SubSonic et ça a l'air génial. Je ne sais pas si je peux l'utiliser en VB. J'ai vu un couple de messages qui suggèrent qu'ils ont fait, mais sur le site, il montre spécifiquement C#. Puis-je utiliser SubSonic avec VB.NET?en utilisant subsonic avec vb.net
Répondre
SubSonic lui-même est entièrement écrit en C#, mais la génération de code pour vos tables et vues est également disponible pour vb.net.
Pour SubSonic3 vous devez ajouter les VB-Modèles à votre projet
http://github.com/subsonic/SubSonic-3.0-Templates/tree/master//SubSonic.TemplatesVB/
Pour SubSonic2, vous devez ajouter un paramètre /lang vb
à Subcommander (sonic.exe) Cependant, personnellement, je bâton avec la génération de code C#, car il est plus testé en raison de la plus grande base d'utilisateurs, je suppose.
Vous pouvez ajouter un autre projet de bibliothèque de classe C# à votre solution (vous devez de toute façon créer un projet distinct pour votre DAL) et le lier dans votre projet de site Web vb.net. Je cours aussi ce genre d'installation.
Il y a 3 inconvénients dans ce scénario:
1) Vous ne pouvez pas créer des solutions avec des projets de langage de programmation mixte avec le studio visuel éditions express. 2) si vous ne voulez pas étendre les classes générées (avec des classes partielles, pas d'héritage), vous devez le faire dans C# puisque les classes partielles doivent être dans le même projet. 3) Si vous modifiez quelque chose dans votre projet C#, les erreurs de conception ne sont affichées qu'après la prochaine compilation (par exemple, si vous modifiez un nom de colonne utilisé dans votre projet vb et régénérez votre DAL, la fenêtre d'erreur ne montre que erreur si vous compilez une fois votre solution/le projet C#
A la fin de la journée, je vous encourage à rester avec C# car il est beaucoup plus amusant de coder avec subsonic (linq, lamdas, ...). mais si vous ne voulez pas, vous devriez être très bien avec vb.
Quelques exemples, qui sont à achive simplier en C#
// in vb.net you have to add the _ modifier at the end of each line
// one thing that gets annoying for large linq queries or
// when using subsonics query tool
var query = from p in products.All()
join c in prodctcategories.All() on p.categoryId equals c.id
where c.categoryName == "Food"
select new {p.productName, c.categoryName}
// from the subsonic3 docs:
//find a single product by ID
var product = Product.SingleOrDefault(x => x.ProductID == 1);
//get a list of products based on some criteria
var products = Product.Find(x => x.ProductID <= 10);
// You can write lamdas in vb.net but they don't look as nice as in c#
Dim product = Product.SingleOrDefault(Function(x) x.ProductID = 1)
Dim products = Product.Find(Function(x) x.ProductID <= 10)
// If you have to write InlineQueries (subsonic's backdoor) you can do this
// with c#. For vb.net you would need a) internal backing fields for the
// poco class ProductResult and you would again need the concat
// the query string with underscore, Environment.NewLine and &
public class ProductResult
{
public int ProductId {get;set;}
public string ProductName {get;set;}
}
public List<ProductResult> GetProducts()
{
string query = @"SELECT p.productid, p.name as productname
FROM product p
INNER JOIN productcategories pc
WHERE pc.categoryname = 'Food'
ORDER BY p.productid ASC";
var result = new CodingHorror(query).ExecuteTypedList<ProductResult>();
}
Thnaks pour la réponse schlawiener – Dan
Hors sujet, mais nous avons trouvé que SubSonic était assez problématique et ne le considérait donc plus dans nos projets. Tant que vous allez chercher quelque chose et l'apprendre, peut-être chercher l'un des autres outils similaires pour .Net (comme CLSA, LLBLGen, NHydrate, etc.) –
Depuis que j'utilise SubSonic j'ai rencontré beaucoup de bugs/problèmes. Mais normalement je les ai réparés en un rien de temps. Les avantages de SubSonic sont l'architecture facile à comprendre et à personnaliser, il est très puissant et s'adapte très bien (sauf pour les xyzCollections, mais vous n'avez pas besoin de les utiliser pour des requêtes plus volumineuses). Mais vous avez raison, il existe d'autres excellents produits, mais je parie qu'aucun d'eux ne bat subsonic dans un speedrun "de zéro à la production";) –