使用NHibernate和Mono.Data.SQLite
我阅读并实施 然而,正如最后一条评论所述,这似乎不适用于NHibernate 3.1 错误是 HibernateeException:中的IDbCommand和IDbConnection实现 找不到程序集Mono.Data.Sqlite。确保 程序集Mono.Data.Sqlite是[…可访问的…] 我在GAC中有Mono.Data.Sqlite。使用NHibernate和Mono.Data.SQLite,nhibernate,sqlite,mono,Nhibernate,Sqlite,Mono,我阅读并实施 然而,正如最后一条评论所述,这似乎不适用于NHibernate 3.1 错误是 HibernateeException:中的IDbCommand和IDbConnection实现 找不到程序集Mono.Data.Sqlite。确保 程序集Mono.Data.Sqlite是[…可访问的…] 我在GAC中有Mono.Data.Sqlite。 我已经尝试将“Mono.Data.Sqlite”和typeof(Mono.Data.Sqlite.SqliteConnection).Assembl
我已经尝试将“Mono.Data.Sqlite”和
typeof(Mono.Data.Sqlite.SqliteConnection).Assembly.FullName
指定为程序集的名称
有人知道如何使这个工作吗?的答案中有一个问题。 为了让给定的构造函数(3个参数)工作,需要首先加载有问题的程序集(Mono.Data.Sqlite) 如果4参数基本构造函数的使用方式如下:
public class MonoSQLiteDriver : NHibernate.Driver.ReflectionBasedDriver
{
public MonoSQLiteDriver()
: base(
"Mono.Data.Sqlite",
"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;
}
}
}
(尽管如此,还是要归功于最初的想法——谢谢。)
如果您使用FluentNHibernate,那么您还需要:
public class MonoSQLiteConfiguration : PersistenceConfiguration<MonoSQLiteConfiguration>
{
public static MonoSQLiteConfiguration Standard
{
get { return new MonoSQLiteConfiguration(); }
}
public MonoSQLiteConfiguration()
{
Driver<MonoSQLiteDriver>();
Dialect<SQLiteDialect>();
Raw("query.substitutions", "true=1;false=0");
}
public MonoSQLiteConfiguration InMemory()
{
Raw("connection.release_mode", "on_close");
return ConnectionString(c => c
.Is("Data Source=:memory:;Version=3;New=True;"));
}
public MonoSQLiteConfiguration UsingFile(string fileName)
{
return ConnectionString(c => c
.Is(string.Format("Data Source={0};Version=3;New=True;", fileName)));
}
public MonoSQLiteConfiguration UsingFileWithPassword(string fileName, string password)
{
return ConnectionString(c => c
.Is(string.Format("Data Source={0};Version=3;New=True;Password={1};", fileName, password)));
}
}
公共类MonoSQLiteConfiguration:PersistenceConfiguration
{
公共静态配置标准
{
获取{返回新的MonoSQLiteConfiguration();}
}
公共MonoSQLiteConfiguration()
{
驱动器();
方言();
原始(“query.substitutions”,“true=1;false=0”);
}
内存()中的公共MonoSQLiteConfiguration
{
原始(“连接。释放模式”,“打开/关闭”);
返回连接字符串(c=>c
.Is(“数据源=:内存:;版本=3;新=真;”);
}
使用文件(字符串文件名)的公共MonoSqlite配置
{
返回连接字符串(c=>c
.Is(string.Format(“数据源={0};版本=3;新的=True;”,文件名));
}
使用FileWithPassword(字符串文件名、字符串密码)的公共MonoSqlite配置
{
返回连接字符串(c=>c
.Is(string.Format(“数据源={0};版本=3;新=True;密码={1};”,文件名,密码));
}
}
到目前为止,我还没有遇到任何问题