Sqlite “Никакая такая таблица” при сохранении объекта

Я пытаюсь вставить объект в базу данных SQLite InMembory следующим образом:

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 error\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);
    }
}

Что я делаю неправильно?Заранее спасибо.

5
задан Brett Veenstra 12 March 2010 в 17:18
поделиться

2 ответа

Вам необходимо создать структуры таблицы перед отправкой любых запросов. Один из способов сделать это использовать nhibernate.tool.hbm2ddl.schemaexport . Вы можете взглянуть на в этом примере . Еще один способ сделать это вручную. Создать таблицу человека ... . Конечно, преимущество SchemaExport заключается в том, что если вы измените свои сопоставления, он автоматически отражается на сгенерированной схеме базы данных.

4
ответ дан 18 December 2019 в 05:55
поделиться

Как сказал Дарин Димитров, вам нужно экспортировать схему. К счастью, есть хороший способ сделать это, используя свободные NH :)

   return Fluently.Configure()
   .Database(SQLiteConfiguration.Standard.InMemory().ShowSql())
   .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Person>())
   .ExposeConfiguration(BuildSchema)
    .BuildSessionFactory();

... где buildschema - это метод:

private void BuildSchema(Configuration cfg)
{
  new SchemaExport(cfg)
    .Create(false, true);
}

Источник: http://wiki.fluentnhernate.org/schema_generation

4
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: