私は非常に単純なFluentNhibernateの例を試しています。1つのテーブルを持つSQL2005データベース、VS2008コンソールアプリケーションです。プログラムが開始する前に、テーブルには1つのレコードがあります。
1つのレコードを追加してから、テーブルのすべてのレコードを表示しようとしています。プログラムは例外なく正常にコンパイルおよび実行されますが、レコードは表示されません。HBMマッピングファイルも作成されません。プログラムはデータベースを完全に無視しているようです(データベースに接続していますが)。
これが私のコードです-私はそれを最小限に抑えようとしました:
実在物:
namespace FluentNhibernationConsole.Entities
{
public class Sorder
{
public virtual int Id { get; private set; }
public virtual DateTime DateCreated { get; set; }
}
}
マッピング:
namespace FluentNhibernationConsole.Mappings
{
class SorderMap : ClassMap<Sorder>
{
public SorderMap()
{
Id(x => x.Id, "SorderId");
Map(x => x.DateCreated);
}
}
}
プログラム自体:
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();
}
}
}