Entity Framework中使用SQLite的一些问题
SQLite数据相当的不错,我目前在一些小型网站都用这个数据库来取代Access,下面就是关于在ASP.NET的Entity Framework当中使用SQLite的一些经验和一些小问题的解决办法。 想要在ASP.NET中使用SQLite,首先需要下载System.Data.SQLite.DLL。点击这里可以下载。 下载好之后,添加该引用后即可使用ADO.NET对SQLite数据进行操作。 如果想使用Entity Framework,还需要执行bin/Designer下的install.exe,勾选你的IDE版本即可(这里会比较慢,不要以为死机了,安装完成以后,记得重新启动一下VS,否则会有一些小问题,当然,你没有遇到说明你RP比我好:-))。 这里主要说下在Entity Framework中的应用。 执行了install.exe后,新建一个ADO.NET Entity Data Model,然后选择从数据库生成。 之后新键连接,数据源选择SQLite Database File,点击确定之后,选择你数据库所在的目录即可。 这里需要注意一点,生成的连接字符串数据库的路径是绝对路径,如果你用虚拟主机,不知道绝对路径,可以采用以下办法: 编写一个静态方法获取连接字符串: public static string GetConnString() 红色文字出就可以填写你的相对路径,这个路径可以自己编写ConfigSection,在Web.config中定义。 OK,现在应该可以通过相对路径连接数据库了。 可以顺便编写一些代码测试一下: using (TDBEntities context = new TDBEntities(GetConnString())) SQLite的Entity Framework设置还是相当简单吧。 但是,在实际使用过程中,还会出现一些问题。 例如:当你在本地编写并测试好了以后,上传到服务器上(我用的是虚拟主机),可能会出现下面这个错误: 找不到请求的 .Net Framework 数据提供程序。可能没有安装。这个问题比较好解决,Google一大把,在Web.Config中添加如下节点: <system.data> 添加好了以后,测试一下,果然没有报这个异常了,只是换了一个异常: 对类型"System.Data.SQLite.SQLiteFactory"的存储区提供程序调用"GetService"方法后,返回null。存储区提供程序可能未正常运行 这个问题,实际上是没有在全局程序集缓存当中注册System.Data.SQLite.DLL,只需要在你的部属服务器上用gacutil注册一下即可,命令如下: gacutil /i System.Data.SQLite.DLL 路径自己设置,我这里举个例子。 那么,用虚拟机的朋友怎么办呢? 这里有个偏方,呵呵。 如果你租用的虚拟服务器目录有执行权限的话,把C盘下Program Files/Microsoft SDKs/Windows/v6.0a/bin目录里的gacutil.exe和System.Data.SQLite.DLL上传到服务器更目录,然后编写一个页面,代码如下: protected void Page_Load(object sender,EventArgs e) 呵呵,这样就在虚拟服务器上注册好了,该服务器上的其他用户也可以使用了。(注意该方法不保证每个人都能用,我租用的虚拟服务器用上面的方法可以注册)。 关于Entity Framework的使用,网上有很多实例,感兴趣的朋友可以去看看,他的使用其实也是相当的简单,但是要利用他设计出好的构架还是要花一些功夫的。asp.net官方网站有个MVC的实例,不过是Linq to SQL的,使用上差不多,叫NerdDinner,虽然短小,但其构架很清晰,考虑了软件设计的几个很重要的方面,值得参考。 这段时间神经衰弱,写文章也晕乎乎的,如果文中有什么错误,欢迎大家批评指正。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |