Je suis nouveau sur NHibernate et l'aspect de la configuration m'a toujours semblé excessivement onéreux. Hier, je suis tombé sur les fonctions de cartographie automatique de Fluent NHibernate et j'ai été impressionné.Fluent NHibernate. Auto Mapping et conventions
Pour me former, je me suis lancé le défi d'essayer le 'Getting Started First Project' (http://wiki.fluentnhibernate.org/show/GettingStartedFirstProject) en utilisant AutoMappings et Conventions. Je dois admettre ne pas avoir beaucoup de chance.
Pour summise mes pas:
J'ai fait quelques modifications mineures au schéma de base de données dans l'exemple, principalement pour éliminer les underscores des clés étrangères (c.-à-Product_id à ProductId) car cela apporterait plus en ligne avec notre normes de nommage de base de données. Q1) J'ai essayé d'écrire une implémentation de IHasManyConvention en utilisant ForeignKeyConvention comme exemple mais la méthode WithKeyColumn ne semble pas exister (je suppose que c'est parce que j'ai téléchargé hier la construction donc le design a changé depuis que l'article a été écrit). Comment puis-je rectifier cela? J'ai également apporté quelques modifications mineures à la couche Entités dans l'exemple car je pensais que cela faciliterait la tâche, ils devaient renommer StoresStockedIn en Stores (Product.cs) et Staff en Employees (Store.cs).
Mon code ressemble à ceci:
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c
.Is(connectionString)))
.Mappings(m => m.AutoMappings.Add(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Store>()
.Where(t => t
.Namespace == "FluentNHibernateTesting.Entities")
.ConventionDiscovery.Setup(c => c.Add<ForeignKeyConvention>())
))
.BuildSessionFactory();
Je puis essayer d'ajouter les magasins, les produits et les employés à la base de données par exemple l'obtention commencé. L'exception que j'obtiens se produit sur la validation et est:
objet référence une instance transitoire non enregistrée - enregistrer l'instance transitoire avant le vidage. Type: FluentNHibernateTesting.Entities.Employee, Entité: FluentNHibernateTesting.Entities.Employee
Q2) Comment résoudre ce problème? Je comprends (à partir de ma lecture limitée) qu'il a quelque chose à voir avec la mise en place des éléments en cascade des relations d'objet correctement, mais je suis un peu perplexe sur la façon de s'y prendre efficacement en utilisant Auto Mapping. Q3) Y at-il une date de sortie cible pour le projet Fluent? Je (comme je suppose beaucoup d'autres) pense que c'est une excellente initiative, mais je suis conscient de l'utiliser à moins qu'il ne soit dans un état stable.
Q4) Il est mentionné dans de nombreux blogs qu'ils travaillent régulièrement vers la parité des fonctionnalités de Fluent avec hbn.xml. Y at-il une liste de ces fonctionnalités manquantes quelque part afin d'aider à l'évaluation et l'utilisation de cet outil?
Appréciez l'aide à l'avance.