Je suis un n00b. Voici ce que je veux faire:AutoMapping avec FluentMapping ne semble pas fonctionner pour moi
Utilisez AutoMapping pour configurer chaque propriété entre le modèle -> table. Ensuite, je voudrais remplacer 2 éléments spécifiques dans une carte fluide. Les deux éléments sont les suivants: Id & Nom de la table.
Alors mes cartes ressemblent à ceci:
public class BillMasterMap : ClassMap<BillMaster>
{
public BillMasterMap()
{
Table("BILLMAST");
Id(x => x.SYSKEY);
}
}
Et mes réglages d'usine ressembler à ceci:
public static ISessionFactory SessionFactory(string connectionString)
{
if (_sessionFactory == null)
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ShowSql()
.ConnectionString(c => c.Is(connectionString)).Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>()))
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<BillMaster>()
.Where(x => x.Namespace.EndsWith("Entities"))))
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<BillInvoiceMap>())
.BuildSessionFactory();
}
return _sessionFactory;
}
Le problème est que FNH trouve la commande prioritaire Id pour BillMaster, mais pas pour BillInvoice qui ressemble à ceci (identique il semble)
public class BillInvoiceMap : ClassMap<BillInvoice>
{
public BillInvoiceMap()
{
Id(x => x.SYSKEY);
Table("BILLINV");
}
}
J'ai contourné le problème en configurant mon AutoMapping avec la configuration() comme indiqué ci-dessous:
.Mappings(m =>
m.AutoMappings.Add(AutoMap.AssemblyOf<BillMaster>()
.Setup(s => s.FindIdentity = property => property.Name == "SYSKEY")
.Where(x => x.Namespace.EndsWith("Entities"))))
Mais je voudrais combiner auto & couramment que d'autres tables ne pas utiliser « SYSKEY » comme colonne Id.
Pensées? Est-ce un bug de FNH?