Новичок здесь,
Я впервые использую Firebird.Я хочу использовать Firebird Embedded с FluentNHibernate, но он выдает исключение при попытке запустить мою тестовую программу.Тестовый проект можно загрузить с здесь .
Конфигурации моей системы:
- Firebird-2.5.0.26074-0_Win32_embed
- Firebird ADO.NET Data Provider 2.6.5
- FluentNHibernate 1.2.0.712
- NHibernate 3.1.0.4000
- Visual Studio 2010 SP1
- .NET Framework 4.0
- Windows 7 64bit
Ниже приведены шаги, которые я предпринял:
- Загрузка
Firebird-2.5.0.26074-0_Win32_embed.zip
из здесь . - Загрузка
NETProvider-2.6.5.zip
из здесь . - Создание нового консольного приложения в Visual Studio 2010.
- Извлечение содержимого zip-файлов в
.\bin\Debug
- Введите тестовый код (см. Подробности ниже).
- Нажмите F5.
Но я получил следующее исключение при new SchemaExport(cfg).Create(false, true);
:
FbException was unhandled by user code:
Dynamic SQL Error
SQL error code = -607
Invalid command
Table A does not exist
После дальнейших тестов я обнаружил, удаляю ли я файл FirebirdSql.Data.FirebirdClient.pdb
NETProvider-2.6.5.zip
из папки .\bin\Debug
.Тестовая программа может работать без ошибок.Но я не уверен, что удаление приведет к другим проблемам.
Ниже приведен мой тестовый код:
class Program
{
static void Main(string[] args)
{
ISessionFactory sessionFactory = BuildSessionFactory();
using (ISession session = sessionFactory.OpenSession())
{
using (ITransaction trans = session.BeginTransaction())
{
}
}
}
static ISessionFactory BuildSessionFactory()
{
string dbPath = "test.db";
string connectionString = String.Format(
"User=SYSDBA;Password=masterkey;Database={0};Dialect=3;Charset=UTF8;ServerType=1;",
dbPath);
if (File.Exists(dbPath))
File.Delete(dbPath);
FbConnection.CreateDatabase(connectionString);
FirebirdConfiguration cfg = new FirebirdConfiguration()
.ConnectionString(connectionString)
.AdoNetBatchSize(100);
ISessionFactory sessionFactory = Fluently.Configure()
.Database(cfg)
.Mappings(m => m.FluentMappings.Add(typeof(AMappings)))
.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.BuildSessionFactory();
return sessionFactory;
}
static void BuildSchema(Configuration cfg)
{
new SchemaExport(cfg).Create(false, true);
}
public class AMappings : ClassMap<A>
{
public AMappings()
{
Id(x => x.Id).GeneratedBy.HiLo("100");
Map(x => x.Text);
}
}
public class A
{
public virtual long Id { get; private set; }
public virtual string Text { get; set; }
}
}
Есть идеи?Спасибо.