Trying to using Nhibernate with Mono amp; SQLite - can#39;t find System.Data.SQLite(尝试将 Nhibernate 与 Mono amp;SQLite - 找不到 System.Data.SQLite)
问题描述
我用单声道 (C#) 编写了一个简单的应用程序,它使用 NHibernate 和 MYSQL - 现在我想将它移植到 SQLite.
I wrote a simple app in mono (C#) that uses NHibernate with MYSQL - and I now want to port it to SQLite.
我希望(曾经)我可以简单地更改 hibernate.cfg.xml 并将其指向不同的数据库.这是我修改后的hibernate.cfg.xml:
My hope is (was) that I could simply change hibernate.cfg.xml and point it to a different database. Here is my modified hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="NHibernate.Test">
<property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
<property name="connection.connection_string">
Data Source=nhibernate_test.db;Version=3
</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
<property name="query.substitutions">true=1;false=0</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
</session-factory>
</hibernate-configuration>
问题是我收到一个错误,它无法找到 System.Data.SQLite.这并不让我感到惊讶,因为据我了解,在单声道中我们应该使用 Mono.Data.SQLite.
The problem is that I'm getting an error to the effect that it can't find System.Data.SQLite. This doesn't surprise me since, as I understand it, in mono we should be using Mono.Data.SQLite.
问题是(假设我正确理解了问题)我不知道如何告诉 NHibernate 使用 Mono.Data.SQLite 而不是 System.Data.SQLite.
The trouble is (assuming I'm understanding the problem correctly) I don't know how to tell NHibernate to use Mono.Data.SQLite instead of System.Data.SQLite.
这一切都是在 Linux 上完成的——如果这有什么不同的话.
This is all being done on Linux - if that makes any difference.
有人知道如何进行吗?
推荐答案
您需要让 nHibernate 了解 Mono.Data.SQLite 程序集.将此添加到配置中:
You need to make nHibernate aware of the Mono.Data.SQLite assembly. Add this to the configuration:
<add key="connection.driver_class" value="Name.Space.MonoSqliteDriver, AssemblyName" />
而且你还需要一个简单的 MonoSQLiteDriver
类:
And you also need a simple MonoSQLiteDriver
class:
public class MonoSqliteDriver : NHibernate.Driver.ReflectionBasedDriver
{
public MonoSqliteDriver() :
base("Mono.Data.Sqlite",
"Mono.Data.Sqlite.SqliteConnection",
"Mono.Data.Sqlite.SqliteCommand")
{
}
public override bool UseNamedPrefixInParameter {
get {
return true;
}
}
public override bool UseNamedPrefixInSql {
get {
return true;
}
}
public override string NamedPrefix {
get {
return "@";
}
}
public override bool SupportsMultipleOpenReaders {
get {
return false;
}
}
}
(代码取自 http://intellect.dk/post/Why-I-love-frameworks-with-lots-of-extension-points.aspx )
这篇关于尝试将 Nhibernate 与 Mono &SQLite - 找不到 System.Data.SQLite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:尝试将 Nhibernate 与 Mono &SQLite - 找不到 System.Data.SQLite
- 输入按键事件处理程序 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01