gpt4 book ai didi

c# - Sqlite "No such table"保存对象时

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

我正在尝试将对象插入到 SQLite InMemory 数据库中,如下所示:

private void button1_Click(object sender, EventArgs e)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
Person p = new Person { Age = 25, FirstName = "Dariusz", LastName = "Smith" };
session.SaveOrUpdate(p);
//transaction.Commit();
}
}

private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
SQLiteConfiguration.Standard.InMemory().ShowSql())

.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Person>())
.BuildSessionFactory();
}

但我收到错误:"SQLite 错误\r\nno such table: Person"只是为了澄清:我正在使用 InMemory 选项。

我也在使用 FluentNhibernate 和映射:

public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
//Table("Person") doesn't resolve my problem
Id(x => x.Id);
Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.Age);
}
}

我做错了什么?提前致谢。

最佳答案

我知道这是一个旧帖子,

我遇到了同样的问题,实际上我准确地写了模式导出。但异常(exception)情况直到出现。

问题是您需要使用打开的 session 来执行模式导出。所以你需要修改你的配置。

ISessionFactory session = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MessagingDescriptorMap>())

.ExposeConfiguration(c =>
{
config = c; //pass configuration to class scoped variable
})
.BuildSessionFactory();

一旦您通过 OpenSession() 创建 session ,使用它来提供您的 SchemaExport.Execute

ISession session = GetSessionFactory().OpenSession();
//the key point is pass your session.Connection here
new SchemaExport(config).Execute(true, true, false, session.Connection, null);

我希望它能帮助其他面临同样问题的人。

注意

我使用了 NHibernate 2.1.2、Fluent NHibernate 1.1 和 .Net 3.5

关于c# - Sqlite "No such table"保存对象时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096808/

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