Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NHibernate和Mono.Data.SQLite_Nhibernate_Sqlite_Mono - Fatal编程技术网

使用NHibernate和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

我阅读并实施 然而,正如最后一条评论所述,这似乎不适用于NHibernate 3.1

错误是

HibernateeException:中的IDbCommand和IDbConnection实现 找不到程序集Mono.Data.Sqlite。确保 程序集Mono.Data.Sqlite是[…可访问的…]

我在GAC中有Mono.Data.Sqlite。
我已经尝试将“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};”,文件名,密码)); } } 到目前为止,我还没有遇到任何问题