definiere ich eine einfache Bug Klasse:Keine persister für Entity
using System;
namespace BugNS.Entities
{
class Bug
{
public virtual int Id { get; private set; }
public virtual int BugNumber { get; set; }
}
}
und eine einfache Zuordnerklasse:
using System;
using FluentNHibernate.Mapping;
using BugNS.Entities;
namespace BugNS.Mappings
{
class BugMap : ClassMap<Bug>
{
public BugMap()
{
Id(b => b.Id);
Map(b => b.BugNumber);
}
}
}
und dann nur versuchen, es zu benutzen mag:
using System;
using System.IO;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using BugNS.Entities;
namespace BugNS
{
class Program
{
private const string DbFile = "bugs.db";
static void Main()
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
Bug b = new Bug { BugNumber = 121212 };
session.SaveOrUpdate(b);
transaction.Commit();
}
}
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard
.UsingFile(DbFile))
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
// delete the existing db on each run
if (File.Exists(DbFile))
File.Delete(DbFile);
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config)
.Create(false, true);
}
}
}
und ich habe den folgenden Fehler erhalten:
An unhandled exception of type 'NHibernate.MappingException' occurred in NHibernate.dll
Additional information: No persister for: BugNS.Entities.Bug
Es tut mir leid, aber ich habe gerade angefangen, Fluent und NHibernate aus der Dokumentation zu lernen. Es wäre toll, wenn jemand die Lösung für dieses Problem kennt, da ich schon viele Stunden vergeblich bin.
Vielen Dank, Visual Studio erstellt standardmäßig private Klassen und keine wo es erwähnt, um öffentliche Klassen zu erstellen. Solche einfachen Fehler kosten viel Zeit. –