我定义了一个简单的Bug类:
using System;
namespace BugNS.Entities
{
class Bug
{
public virtual int Id { get; private set; }
public virtual int BugNumber { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
和一个简单的映射器类:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后尝试使用它像:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
NHibernate.dll中发生了未处理的"NHibernate.MappingException"类型异常
附加信息:没有持久性:BugNS.Entities.Bug
对不起,我刚从文档开始学习Fluent和NHibernate.如果有人知道这个问题的解决方案会很好,因为我已经花了很多时间徒劳.
对于Fluent来说,类的访问级别需要公开才能使用它.
请尝试以下方法:
public class Bug
{
public virtual int Id { get; private set; }
public virtual int BugNumber { get; set; }
}
public class BugMap : ClassMap<Bug>
{
public BugMap()
{
Id(b => b.Id);
Map(b => b.BugNumber);
}
}
Run Code Online (Sandbox Code Playgroud)
当我开始使用Fluent时,这对我来说也是一个难题.
通常出错的另一件事是缺少virtual关键字,这是NHibernate对这些属性进行更改所必需的.很高兴你让那部分正确:)
希望有所帮助.
谢谢
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |