把System.Data.SQLite和ADO.NET(WCF) Data Service双剑合璧

有了System.Data.SQLite这么庞大的效果,在一些景况下中央能够代替SQL
Server 2005/2008 Express
  SQL Server Compact Edition了。

自身也上传了自家试行的言传身教代码(当中包罗了用于测试EF功效的EFQuerySamples),从此间下载

  1. LoadProperty格局(即Explicit
    loading):在当选主表中某条数据的时候,在加载当前目的的明细表属性,如:dc.LoadProperty(c,”Orders”);
  2. Expand格局(即Eager
    loading):在载入主表数据的时候,就提前载入明细表的数据
  1. 安装:在支付机器和配置服务器上都设置SQLite-一.0.65.0-setup.exe。就自己的情状而言,开辟机器上,会自行增加GAC,而服务器上急需手动增加GAC。并且奇异的是开拓机器上,有MSIL、x捌6和英特尔64的本子,而在服务器上不得不加多x捌陆和英特尔6四的本子。System.Data.SQLite和System.Data.SQLite.Linq都急需增加。假诺在服务器上不增加GAC,那么在服务器上运维,会唤醒不可能加载程序集(作者臆想是因为System.Data.SQLite.DLL内部统一了sqlite的引擎)。
  2. 开垦:通过VS的数据库管理器,在sqlite中增多表等。然后新建3个Entity
    Data Model,把表增加到EDM中。新建一个ADO.NET Data
    Service的服务,修改关联的ObjectContext。配置config.SetEntitySetAccessRule。
  3. 安排:编译配置就AnyCPU。(在此之前笔者碰到一些难题,查看资料说有相当的大恐怕须要设定为x6四或x捌陆,不过鉴于自家的开销机器和服务器都是6四的,所以理应不是以此难点。相应解释:http://www.cnblogs.com/downcom/archive/2009/10/26/1590120.htmlhttp://sqlite.phxsoftware.com/forums/t/1970.aspx,所以只要您的开支机器和服务器是不相同位的话,要求思量这种情况)。需求在config文件中丰硕(在readme中其实有讲到):

    <system.data>
       <DbProviderFactories>
         <remove invariant=”System.Data.SQLite”/>
         <add name=”SQLite Data Provider”
    invariant=”System.Data.SQLite” description=”.Net Framework Data
    Provider for SQLite” type=”System.Data.SQLite.SQLiteFactory,
    System.Data.SQLite” />
       </DbProviderFactories>
    </system.data>

  4. 配置:布署应该不会有怎么着大标题,重若是db文件应当让日前的周转用户(一般是Network
    Service)对其独具读写权限。

在有了System.Data.SQLite和ADO.NET Data
瑟维斯为大家打好的根基之上,大家得以把它们合璧在一起,发挥越来越大的法力。类似的见识,ccBoy也有论述——Astoria
to SQLite to Entity Framework to
建立你的O陆风X8M观念
。以自个儿那两日的实施来看,最大的长处如下:

  • 通过应用System.Data.SQLite简化服务器端的布置,尤其数据库的安排。固然使用SQL
    Server 二〇〇七/二零零六Express的数据库文件的办法,也会遇见权限(或局地无缘无故)的标题。
  • 由此采纳ADO.NET Data
    Service简化数据库的拜会,在客户端可以直接编写LINQ查询,而不要局限于于自定义WCF访问接口。也不会高出实体关系管理在Client和Server端的分化难点。

对于ADO.NET Data
Service的行使,可以敬仰:http://kb.cnblogs.com/page/43963/Astoria
(ADO.NET Data
瑟维斯)客户端操作能够

在这一个示例中,也蕴藏了怎么样赚取明细数据的不二秘技,有二种:

关于System.Data.SQLite,能够参见小编事先的介绍博客。可是今后的新型版本一.0.65(2010年10十月2四日公布),相对在此之前的本子提供了之类新特点:

  • 包装了sqlite 3.6.16
  • 支持.NET 3.5 SP1
  • 支持Mono
  • 支撑VS二〇一〇(其实只要您安装了20十的话,也协助的)设计器:数据库处理器,Typed
    DataSet(类型化数据集)设计器,EDM(实体数据模型)设计器等
  • 最重视的是,差不多完全支持ADO.NET 三.5 Entity
    Framework(实体框架)。有了这几个特点,本文才有存在的意义。

当然,要很好的施用那两把利剑,须要留意如下事项(以自家的实施来说):

Update(2009-12-28):由此小编的实施,Data
Service并未有对LoadProperty方法进行缓存,每回调用那个措施都是要请求服务器,那样处理其实也理所当然;而Expand形式,在率先次开发银行的时候载入全数数据,也会相当的慢。所以本人提出:主表数据少,而明细表数据多的时候,选用LoadProperty格局;而主表数据多,而明细表数据少的时候,对主表分页并使用Expand方式来加载明细表。

对于ADO.NET Data Service大家应该已经熟知了,未来曾经更名叫WCF Data
Service了。Entity
Framework和WCF都是过度底层的才具,在斯MattClient或奥迪Q7IA中付出面向数据驱动的应用程序(EF访问数据,WCF直接揭示实体和实体操作的主意),直接运用那五个才干或多或少会碰到不适于的景况,对整体开荒效能也有影响。为了缓和那样的难点,也为了帮忙流行的REST访问数据情势,微软研究开发了Astoria项目,也即ADO.NET(WCF)数据服务。

网站地图xml地图