新手在这里,
这是我第一次使用Firebird。我想将Firebird Embedded与FluentNHibernate一起使用,但是当我尝试运行我的测试程序时它会抛出异常。测试项目可以从here下载。
我的系统配置:
以下是我采取的步骤:
Firebird-2.5.0.26074-0_Win32_embed.zip
。NETProvider-2.6.5.zip
。.\bin\Debug
但是我在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; }
}
}
有什么想法吗?感谢。
答案 0 :(得分:0)
你尝试使用完整路径
dbPath = "c:\app\data\test.gdb";
我不完全知道dotnet驱动程序,但通常使用firebird,我们提供了完整的路径。
答案 1 :(得分:0)
删除pdb文件不会导致任何问题。在抛出异常时获取行号很有帮助。
我也混淆了32位-64位的东西。所以现在我使用64位平台的FB嵌入式64位和32位平台的32位,我从未遇到任何问题。
尝试清理调试文件夹并重新复制FB 64位文件,看看它是否有效。
维杰