Cascade speichert mit fließendem NHibernate AutoMapping - alte Antwort immer noch gültig?

Ich möchte genau das tun, was diese Frage stellt:Kaskadenspeicherung mit Fluent NHibernate AutoMapping

Verwenden von Fluent Nhibernate-Mappings, um "Cascade" global einmal für alle Klassen und Beziehungstypen mit einem Aufruf zu aktivieren, anstatt es für jedes Mapping einzeln festzulegen.

Die Antwort auf die frühere Frage sieht gut aus, aber ich befürchte, dass die Fluent Nhibernate-API im letzten Jahr ihre .WithConvention-Syntax geändert hat und die Antwort gebrochen hat ... entweder das oder mir fehlt etwas.

Ich erhalte immer wieder eine Reihe von Fehlern im Zusammenhang mit dem IOneToOnePart, IManyToOnePart und all ihren Variationen:

"Der Typ- oder Namespace-Name 'IOneToOnePart' wurde nicht gefunden (fehlt eine using-Direktive oder eine Assembly-Referenz?)"

Ich habe die offiziellen Beispiel-DLLs, die RTM-DLLs und den neuesten Build ausprobiert und keiner von ihnen scheint VS 2008 den erforderlichen Namespace anzeigen zu lassen.

Das zweite Problem ist, dass ich die Klasse mit meinem AutoPersistenceModel verwenden möchte, aber ich bin nicht sicher, wo sich diese Zeile befindet: .ConventionDiscovery.AddFromAssemblyOf () in meiner Factory-Erstellungsmethode.

 private static ISessionFactory CreateSessionFactory()
            {

                return Fluently.Configure()
                  .Database(SQLiteConfiguration.Standard.UsingFile(DbFile))
                  .Mappings(m => m.AutoMappings
                        .Add(AutoMap.AssemblyOf<Shelf>(type => type.Namespace.EndsWith("Entities"))
                                .Override<Shelf>(map =>
                                {
                                    map.HasManyToMany(x => x.Products).Cascade.All();
                                })
                             )

                      )//emd mappings
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();//finalizes the whole thing to send back. 

            }

Unten ist die Klasse und die Verwendung von Anweisungen, die ich versuche

   using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;

    using FluentNHibernate.Conventions;
    using FluentNHibernate.Cfg;
    using FluentNHibernate.Cfg.Db;
    using NHibernate;
    using NHibernate.Cfg;
    using NHibernate.Tool.hbm2ddl;
    using FluentNHibernate.Mapping;


    namespace TestCode
    {
        public class CascadeAll : IHasOneConvention, IHasManyConvention, IReferenceConvention
        {
            public bool Accept(IOneToOnePart target)
            {
                return true;
            }

            public void Apply(IOneToOnePart target)
            {
                target.Cascade.All();
            }

            public bool Accept(IOneToManyPart target)
            {
                return true;
            }

            public void Apply(IOneToManyPart target)
            {
                target.Cascade.All();
            }

            public bool Accept(IManyToOnePart target)
            {
                return true;
            }

            public void Apply(IManyToOnePart target)
            {
                target.Cascade.All();
            }
        }

    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage