Mono下配置ActiceRecord使用sqlite数据库

Mono下配置ActiceRecord使用sqlite数据库,第1张

概述    .Net下我们经常使用的System.Data.Sqlite是一个嵌入了原生c++ sqlite数据库模块的程序集,由于大多数的Linux下默认已经具备了Sqlite的运行环境,System.Data.Sqlite无法运行在Linux下。所以,Mono.Data.Sqlite [1]出现了,Mono.Data.Sqlite可以让Mono下的程序使用相同的类名 *** 作sqlite数据库,方便应用 @H_502_0@ .Net下我们经常使用的System.Data.sqlite是一个嵌入了原生c++ sqlite数据库模块的程序集,由于大多数的linux下默认已经具备了sqlite的运行环境,System.Data.sqlite无法运行在linux下。所以,Mono.Data.sqlite [1]出现了,Mono.Data.sqlite可以让Mono下的程序使用相同的类名 *** 作sqlite数据库,方便应用程序从windows迁移到linux:你只需更改项目引用即可。

@H_502_0@ 但由于ActiceRecord已封装了NHibernate的数据库驱动类"NHibernate.Driver.sqlite20Driver",而该驱动类默认从System.Data.sqlite程序集中加载所需类,因此ActiceRecord使用sqlite在linux环境下的Mono中运行就出现了矛盾:ActiveRecord需要System.Data.sqlite,而该程序集无法在linux环境下的Mono中被正常运行,这就需要一个中间类[2]来进行转接,并且进行对应的配置

@H_502_0@1. 在项目中添加中间类MonosqliteDriver

namespace Your.Assembly{    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;            }        }    }}
@H_502_0@2. 修改ActiveRecord配置文件

<add key="connection.driver_class" value="NHibernate.Driver.sqlite20Driver" /><!--<add key="connection.driver_class" value="Your.Assembly.MonosqliteDriver,Your.Assembly" />-->
@H_502_0@3. 添加Mono.Data.sqlite引用

@H_502_0@以Ubuntu 10.04为例,Mono.Data.sqlite.dll可以从该目录下找到

cp /usr/local/lib/mono/4.0/Mono.Data.sqlite.dll ~/
总结

以上是内存溢出为你收集整理的Mono下配置ActiceRecord使用sqlite数据库全部内容,希望文章能够帮你解决Mono下配置ActiceRecord使用sqlite数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1176559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存