首页 文章

Nhibernate(流畅)SchemaExport和SQlite问题!

提问于
浏览
0

我正在使用Nhibernate(流利)与Sqlite,它没有问题我做了什么:

  • 为每个表创建POCO EntityClasses,如下所示:

public class tbl_Manufactor:BusinessObject <tbl_Manufactor>
{
public virtual string Name {get;组; }
}

Entity Classes都继承自BusinessObject,它包含ID属性和简单的CRUD函数我还有其他6个实体类

  • 使用FluentHibernate创建映射,如下所示:

使用Database.Entitites;
使用FluentNHibernate.Mapping;

命名空间Database.Mappings
{
public class tbl_ManufactorMap:ClassMap <tbl_Manufactor>
{
public tbl_ManufactorMap()
{
Id(x => x.ID);
Map(x => x.Name);
}
}
}

  • 像这样创建Fluent配置:

var Config = Fluently.Configure()
.Database(SQLiteConfiguration.Standard
.ConnectionString(C => c.FromConnectionStringWithKey( “DBConnection的”))
.ShowSql())
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf <tbl_Manufactor>())
.ExposeConfiguration(cfg => _configuration = cfg)

sessionFactory = Config.BuildSessionFactory();

  • 使用SchemaExport创建架构:

新的SchemaExport(_configuration)
.Create(false,true);

然后Nhibernate用正确的表创建了一个完全正常工作的SQlite数据库!

但后来我想添加2个实体类(我以与以前相同的方式完成)但是当我运行我的测试(创建我的第一个数据库模式)时,它不会将新类(表)添加到数据库中!

最疯狂的是,测试总是删除任何创建的数据库,并在每次运行测试时使用SchemaExport重新创建它 .

有人能帮助我吗?

3 回答

  • 1

    您还可以选择直接使用Execute进行数据库更新:

    bool script = false;
    bool update = true;
    new SchemaExport(_configuration).Execute(script, update);
    

    编辑:确保映射类是公共的 .

  • 3

    内存中的Sqlite仅存在连接的生命周期 . 因此,对于每个新连接,您需要从头开始 .

    我知道两个解决方案 . 一种是仅使用单个会话(和连接)进行单元测试 . 另一个是我做的:我实现了一个始终返回相同连接的连接提供程序 .

  • 0

    您可以检查以下内容: - 新实体类是否在同一个程序集中? - 还要检查模型中的循环 .

相关问题