使用SQLite配置NHibernate时出现MissingManifestResourceException

时间:2011-08-20 17:24:27

标签: c# .net nhibernate sqlite

我一直在尝试使用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。

非常感谢任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:1)

最新版本的SQLite for .NET分发为2个dll。

  • System.Data.SQLite.dll
  • SQLite.Interop.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