我一直在尝试使用SQLite数据库配置NHibernate,而且我似乎遇到了一个我不知道如何处理的异常。
这是我的hibernate.cfg.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
<property name="connection.connection_string">
Data Source=mynewdatabase.dbf;Version=3
</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
<property name="query.substitutions">true=1;false=0</property>
<property name="show_sql">true</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
</session-factory>
</hibernate-configuration>
这是我的person.hbm.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="SQLiteObjects"
namespace="SQLiteObjects.Domain">
<class name="Person">
<id name="Id">
<generator class="guid" />
</id>
<property name="FirstName" />
<property name="LastName" />
<property name="Age" />
<property name="Height" />
</class>
</hibernate-mapping>
运行以下代码时,我得到一个MissingManifestResourceException(在最后一行)
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(typeof(Person).Assembly);
new SchemaExport(cfg).Execute(false, true, false);
PersonRepository pr = new PersonRepository();
cfg.BuildSessionFactory();
我在Windows 7旗舰版64位上使用.NET 4.0。
非常感谢任何帮助。 谢谢!
答案 0 :(得分:1)
最新版本的SQLite for .NET分发为2个dll。
两个dll都需要与EXE位于同一个文件夹中。 Interop dll是特定于平台的,因此您必须手动(或后期构建)复制x86或x64版本。
要记住的另一件事是 SQLite.Interop.dll itslef取决于 MSVCR100.DLL (Visual C ++ 2010 SP1可再发行组件包的一部分)。你可以在这里得到它:
另外请确保从新网站下载该项目,该项目现在得到SQLite团队的支持:
SQLite.org上的人已经接管了该网站的所有权 System.Data.SQLite项目。可以在新版本中找到新版本 site,System.Data.SQLite.org