J'essaye un exemple Fluent Nhibernate très simple: Base de données SQL 2005 avec une table, application console VS2008. La table a un enregistrement avant le démarrage du programme. J'essaie d'ajouter un enregistrement, puis afficher tous les enregistrements de la table. Les programmes compilent et s'exécutent sans exception, mais aucun enregistrement n'est affiché. Le fichier de mappage HBM n'est pas créé non plus. Il semble que le programme ignore totalement la base de données (même si elle s'y connecte).Basic Fluent NHibernate programme compile et s'exécute, mais rien n'est sauvegardé ou chargé à partir de la base de données
Voici mon code - j'ai essayé de garder un minimum:
Entité:
namespace FluentNhibernationConsole.Entities
{
public class Sorder
{
public virtual int Id { get; private set; }
public virtual DateTime DateCreated { get; set; }
}
}
Cartographie:
namespace FluentNhibernationConsole.Mappings
{
class SorderMap : ClassMap<Sorder>
{
public SorderMap()
{
Id(x => x.Id, "SorderId");
Map(x => x.DateCreated);
}
}
}
Programme
lui-même:
namespace FluentNhibernationConsole
{
class Program
{
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration
.MsSql2005
.ShowSql()
.ConnectionString(@"server=.\sqlexpress;database=lsdb;Integrated Security=SSPI;")
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>()
.ExportTo(@"d:\temp\nh")
)
.BuildSessionFactory();
}
static void Main(string[] args)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var order1 = new Sorder {DateCreated = DateTime.Now};
transaction.Commit();
}
using (session.BeginTransaction())
foreach (var order in session.CreateCriteria(typeof(Sorder)).List<Sorder>())
Console.WriteLine("Order: " + order.DateCreated.ToLongTimeString());
}
Console.ReadKey();
}
}
}
Oh, je viens de réaliser que je n'ai pas appelé avant saveOrUpdate transaction.Commit. Cependant, si je l'appelle, je reçois Mapping Exception "Non persister pour: FluentNhibernationConsole.Entities.Sorder". Qu'est-ce que cela signifie? – Alexey