gpt4 book ai didi

.net - 为什么 hbm2ddl.SchemaExport 不在这里运行?

转载 作者:IT王子 更新时间:2023-10-29 06:29:20 26 4
gpt4 key购买 nike

尝试在 NHibernate 2.1.2.4000 中使用 IInterceptor,我得到了以下测试代码:

public class TestingNHibernateInterceptors
{
[Fact]
public void can_intercept_delete_for_audit_log()
{
FullyConfigureDb();
Session(s => s.Linq<Person>().Any().ShouldBe(false));
}
ISessionFactory _sessions;
void Session(Action<ISession> @do)
{
using (var s = _sessions.OpenSession())
{
@do(s);
s.Flush();
}
}
void FullyConfigureDb()
{
var cfg = CreateConfig();
_sessions = cfg.BuildSessionFactory();
BuildSchema(cfg);
}
Configuration CreateConfig()
{
return Fluently.Configure()
.Database(new SQLiteConfiguration().InMemory())
.Mappings(x => x.FluentMappings.Add<PersonMap>())
.BuildConfiguration()
.SetProperty("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
.SetProperty("show_sql", "true");
}
void BuildSchema(Configuration config)
{
var se = new NHibernate.Tool.hbm2ddl.SchemaExport(config);
se.Execute(false, true, false, _sessions.OpenSession().Connection, null);
}
public class Person
{
public virtual Guid Id { get; private set; }
public virtual string Name { get; set; }
}
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Id);
Map(x => x.Name);
}
}
public class AuditInterceptor : EmptyInterceptor, IInterceptor
{
public override void OnDelete(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
{
base.OnDelete(entity, id, state, propertyNames, types);
}
}
}

但是。我不断收到消息:

failed: NHibernate.ADOException : could not execute query [ SELECT count(*) as y0_ FROM "Person" this_ ] [SQL: SELECT count(*) as y0_ FROM "Person" this_] ---- System.Data.SQLite.SQLiteException : SQLite error

模式导出似乎有效 - 为什么没有创建表?

我猜这与使用内存中的 sqllite 有关,但不确定是什么问题。有什么想法吗?

最佳答案

去过那里,做过那件事,也受过伤 ;-)

一旦session被释放,数据库基本上就掉线了。当您在构建模式和运行测试时使用不同的 session 时,模式在测试运行时不再存在。

查看此 post来自 Justin以获得非常清楚的解释。

关于.net - 为什么 hbm2ddl.SchemaExport 不在这里运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com