Question

Im nouveau à NHibernate, l'aspect de la configuration de celui-ci a toujours semblé trop lourde pour moi. Hier, je suis tombé sur les fonctionnalités de cartographie automatique de Fluent NHibernate et a été impressionné.

Pour me renseigner, je me suis fixé le défi de tenter la « Mise en route premier projet » ( http: //wiki.fluentnhibernate.org/show/GettingStartedFirstProject ) en utilisant AutoMappings et conventions. Je dois admettre que de 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 nos normes de dénomination de base de données.

Q1) J'ai essayé d'écrire une implémentation IHasManyConvention utilisant le ForeignKeyConvention comme exemple, mais la méthode WithKeyColumn ne marche pas semble exister (je suppose que c'est parce que je téléchargé Yesterdays construire donc par la suite la conception a changé depuis l'article a été écrit). Comment puis-je remédier à cette situation?

J'ai aussi apporté quelques modifications mineures à la couche d'entités dans l'exemple que je pensais que ce serait plus facile, ils devaient renommer StoresStockedIn aux magasins (Product.cs) et le personnel aux employés (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 je me arrive sur le COMMIT et est:

objet fait référence à une instance transitoire non enregistré - sauvegarder l'instance transitoire avant le rinçage. Type: FluentNHibernateTesting.Entities.Employee, entité: FluentNHibernateTesting.Entities.Employee

Q2) Comment puis-je résoudre ce problème? Je comprends (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 ce mappage automatique.

Q3) Y at-il une date de sortie cible pour le projet Fluent? Je (comme je suppose que beaucoup d'autres) considèrent que c'est une excellente initiative, mais je suis conscient de l'utiliser à moins qu'il soit dans un état stable.

Q4) Son mentionné dans la plupart des blogs qu'ils travaillent de façon constante vers la parité des fonctions en 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.

Était-ce utile?

La solution

J'ai demandé à James Gregory les mêmes questions dans un courriel directement à lui. Il a fourni cette excellente réponse.

'Hey Paul,

1) KeyColumnNames est ce que vous êtes après.

2) Vous pouvez le faire de 3 façons. Installation d'un IHasManyConvention à l'échelle mondiale font toute cascade de relations, utilisez un appel ForTypesThatDeriveFrom ou un remplacement de AutoMapping.

3) Nous sommes dans des essais privés de notre version 1.0 maintenant. Pas sûr que nous aurons une version bêta publique ou directement à libérer, mais qui devrait se produire dans les prochaines semaines.

4) Il est très peu probable que nous serons jamais avec fonctionnalité entièrement NHibernate, nous ne voulons pas être. La plupart des fonctions NH sont extrêmement ésotérique, et il y a peu d'avantages pour nous les mettre en œuvre. A partir de 1,0, il y aura très peu de fonctionnalités que nous ne soutenons pas que les gens utilisent régulièrement. Je peux dire avec confiance tous les scénarios de cartographie communs sont pris en charge, et s'il y a quelque chose qui n'est pas vous pouvez toujours retomber à HBM pour ce cas.

Pour préempter des commentaires que nos documents sont à jour, la documentation va être remis à neuf à 1,0;)

James'

Merci James.

Autres conseils

  

Y at-il une date de sortie cible pour la   projet Courant? Je (comme je suppose que beaucoup   d'autres) considèrent que c'est un excellent   initiative, mais je suis conscient de l'utiliser   à moins qu'il soit dans un état stable.

Vous devriez être en mesure d'obtenir une version de travail de Fluent NHibernate de leur dépôt SVN maintenant. Ils ont également compilé les binaires.

Il n'y a pas de communiqués officiels de Fluent NHibernate. Ce n'est pas le reflet de la qualité, mais notre rythme rapide du changement. Notre code de base est mis à jour quotidiennement, ce qui rend la mise des communiqués officiels un effort inutile jusqu'à ce que nous atteignons la parité de fonction avec NHibernate de base. La plupart des fonctionnalités que vous utilisez régulièrement au jour le jour sont prêts.

http://fluentnhibernate.org/downloads

Les enjeux actuels sont ici:

http://code.google.com/p/fluent-nhibernate / questions / liste

Aucun d'entre eux semblent être des tueurs-traitent. Je suppose que cela dépend de combien de temps vous devez expérimenter.

  

fait référence à un objet transitoire non enregistrées   par exemple - enregistrer l'instance transitoire   avant le rinçage. Type:   FluentNHibernateTesting.Entities.Employee,   Entité:   FluentNHibernateTesting.Entities.Employee

Si vous Google objet référence une instance transitoire non enregistrées , vous trouverez plusieurs matchs pour cela. Votre meilleur pari est de commencer à passer par ces derniers et le dépannage. Pour la petite histoire, de ce que je l'ai lu sonne comme le message d'erreur signifie exactement ce qu'il dit, ou il y a une relation plusieurs-plusieurs ou en cascade qui ne donne pas à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top