NHibernate和SQLite的困境

时间:2010-07-04 14:28:51

标签: nhibernate sqlite

我遇到了让nhibernate与sqlite玩得很好的问题:

我的NHibernate配置:

<NHibernate>
  <hibernate xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.connection_string">Data Source=test.db;New=True;</property>
      <property name="show_sql">false</property>
      <property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
      <property name="use_outer_join">true</property>
      <property name="show_sql">false</property>
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
      <mapping assembly="SimpleGallery" />
    </session-factory>
  </hibernate>
</NHibernate>

我在Windows 7 64位上运行。我已经尝试将system.data.sqlite.dll的x86和64位版本复制到输出目录,并引用它们并将它们设置为复制本地但无效。 VS解决方案已设置为编译到任何/ x86 / 64bit,但我仍然得到例外:

“{”无法找到程序集System.Data.SQLite中的IDbCommand和IDbConnection实现。确保程序集System.Data.SQLite位于应用程序目录或全局程序集缓存中。如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名。“}”

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我在4月份打了这个,终于让它运转了 - 什么是PITA!尝试更改配置以支持混合加载并添加如下所示的运行时重定向。

我希望有一个SQLite版本可以解决这个问题,但我猜不是。如果您发现其他情况,请告诉我。

干杯,
Berryl

<!-- SQLite requires this mixed mode load setting-->
<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  <requiredRuntime version="v4.0.20506"/>
</startup>

  <runtime>
   ....

  <!-- SQLite is built with older System.Data so we need this redirect -->
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089"/>
      <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>

 ....
</runtime>