【发布时间】:2011-07-11 14:03:57
【问题描述】:
这里是新手,
这是我第一次使用 Firebird。我想将 Firebird Embedded 与 FluentNHibernate 一起使用,但是当我尝试运行我的测试程序时它会抛出异常。测试项目可以从here下载。
我的系统配置:
- Firebird-2.5.0.26074-0_Win32_embed
- Firebird ADO.NET 数据提供程序 2.6.5
- FluentNHibernate 1.2.0.712
- NHibernate 3.1.0.4000
- Visual Studio 2010 SP1
- .NET Framework 4.0
- Windows 7 64 位
以下是我采取的步骤:
- 从here下载
Firebird-2.5.0.26074-0_Win32_embed.zip。 - 从here下载
NETProvider-2.6.5.zip。 - 在 Visual Studio 2010 中创建一个新的控制台应用程序。
- 将压缩文件的内容解压到
.\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
经过进一步测试,我发现如果我从.\bin\Debug文件夹中删除NETProvider-2.6.5.zip的FirebirdSql.Data.FirebirdClient.pdb文件。测试程序可以正常运行。但我不确定删除它是否会导致其他问题。
下面是我的测试代码:
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; }
}
}
有什么想法吗?谢谢。
【问题讨论】:
-
我的回答(下面给出了流畅的 NH 初始化)证明对您有用吗?
-
@Vijay,抱歉我的回复迟了。经过多次测试,我仍然得到异常。我暂时切换回 SQLite,因为我需要尽快完成当前的项目。当我完成当前项目时,我会再试一次 Firebird。感谢您的帮助和跟进。
-
只是为了让您知道您的机器上发生了其他事情,因为我刚刚复制并粘贴了您的代码以尝试修复它。但它刚刚奏效!我使用您在表中映射到表的类在表中插入了一行。同样在flamerobin中打开数据文件,确认表和行的存在。 *** 唯一的区别是我使用了 fluentnhibernate-NH3.1-1.2.zip *** - Vijay
-
@Vijay,感谢您的测试!我刚刚将我的测试项目(dl.dropbox.com/u/1421509/forums/stackoverflow.com/…)复制到另一台机器(XP 32 位,Visual Studio 2010(无 SP1),但不幸遇到了同样的异常。请您上传您的测试项目(或检查我的测试项目是否可以在你的机器上运行)?非常感谢!
-
这里是下载链接 - 如果它适合你,请告诉我:skydrive.live.com/…
标签: c# nhibernate fluent-nhibernate firebird firebird2.5