zoukankan      html  css  js  c++  java
  • NLite.Data的应用

      前段时间,我们对NLite.Data进行了开发,其NLite.Data Framework 是一个轻量简单易用的开源Linq ORM数据访问组件,支持Nullable类型和枚举类型,对Linq的谓词提供了完美的支持,旨在让绝大部份的主流数据库都使用 Linq 来进行程序开发,让开发人员访问数据库从SQL中解放出来,易学易用上手快,配置简单,并且提供了源代码下载,方便定制。支持多数据库,目前支持Access、SQLServer、SqlCE、SQLite、MySQL、ORACLE,未来还会支持更多的数据库。现在进度将近尾声,下面我对此组件的使用方法和步骤做下说明:

         

          1.  安装NLite Linq ORM Framework 

         在Package Manager Console控制台中输入下列命令:

         PM> Install-Package NLite.Data 

        备注:Nuget安装方法和步骤:  http://docs.nuget.org/docs/start-here/installing-nuget

          Nuget使用说明:  http://docs.nuget.org/docs/start-here/using-the-package-manager-console

      2.  连接字符串配置

         在配置文件中配置连接数据库字符串,以Sql Server Compact 为例

     <configuration>
       <connectionStrings>
         <add providerName="System.Data.SqlServerCe.3.5" 
              name ="Demo" 
              connectionString="Data Source=DataBase\MyDatabase#1.sdf;Persist Security Info=True;pwd = 123"/>
       </connectionStrings>
     </configuration>

      3.  数据库表设计

          列名          数据类型          长度          允许空值           是否自增         主键

     ID             int                  4                 否                  是            是

    Name        nvarchar         10                否                  否            否

    Gender      real                 4                 是                  否            否

     Age           int                  4                 是                  否            否

     

        4.  实体类的配置

              首先引用NLite.Data.dll组件,然后添加属性(这里必须为属性,不可为字段),实体类中的属性要与数据库表中的列相对应。下面举例说明,我在数据库中建了一个名为User的表,包含ID、Name、Gender、Age列。那么,在实体类中的配置如下:

              标准配置:

     1       [Table(Name = "User")]
     2       public class User
     3       {
     4             [Id(IsDbGenerated = true)]
     5             public int ID { get; set; }
     6             [Column(Name = "Name")]
     7             public string Name { get; set; }
     8             [Column(Name = "Gender")]
     9             public bool Gender { get; set; }
    10             [Column(Name = "Age")]
    11             public int Age { get; set; }
    12       }

             缺省配置:

    1       public class User
    2       {
    3             public int ID { get; set; }
    4             public string Name { get; set; }
    5             public bool Gender { get; set; }
    6             public int Age { get; set; }
    7       }

        说明:如果其他属性名或类名与数据库表中的列名或表名一致,则实体类中相应的属性或类名上面可以不写标志,可以直接映射。不清楚可以参考:http://ndo.codeplex.com/ 下的“设计理念”

      5.  写Sql语句之前的配置

      写Sql语句之前还需要配置,以上面的User表为例:

    1 connectionStringName = "Demo";
    2 cfg = DbConfiguration
    3      .Configure(connectionStringName)//通过connectionStringName对象创建DbConfiguration对象(可以用于配置文件中有多个数据库连接字符串配置)
    4      .AddClass<Model.User>()//注册实体到数据表的映射关系
    5      ;

      6.  增、删、改、查代码示例 

    •  添加用户示例
    1 Model.User user = new Model.User
    2 {
    3      Name = "新记录",
    4      Age = 23,
    5      Gender = true
    6 };
    7 using (var ctx = cfg.CreateDbContext())
    8       ctx.Set<User>().Insert(user);

         语句描述:实例化一个Use对象(ID为自增,可不写),是以对象的形式插入到数据库中,Insert方法返回一个整型值,成功为1,否则为0。

         注:该语句生成的sql语句为:

    1 INSERT INTO [User] ( [Name], [Gender],[Age] )
    2 VALUES (@p0, 1 , 23)
    3 -- p0:(DbType = String,Value = 新记录) 
    • 删除用户示例
    1 using (var ctx = cfg.CreateDbContext())
    2 {
    3    ctx.Set<User>().Delete(p=> p.ID == 5);
    4 }

         语句描述:该方法是通过唯一标识ID删除数据库中的一条记录,Delete方法返回一个整型值,成功为1,否则为0。

     注:该语句生成的sql语句为:

    1 DELETE FROM [User]
    2 WhERE ( [ID] = 5 )
    • 修改用户示例
    1 Model.User user = new Model.User
    2 {
    3      ID = 5,
    4      Name = "修改新记录",
    5      Age = 24,
    6      Gender = false
    7 };
    8 using (var ctx = cfg.CreateDbContext())   
    9      ctx.Set<User>().Update(user);

         语句描述:实例化一个Use对象(其中包含唯一的标识),是以对象的形式通过唯一标识找到该记录并更新数据库表中的记录,Update方法返回一个整型值,成功为1,否则为0。

          注:该语句生成的sql语句为:     

    1 UPDATE [User]
    2 SET [Name] = @p0, [Gender] = 0, [Age] = 24
    3 WHERE ( [ID] = 5 )
    4 -- p0:( DbType = String,Value = 修改新记录 )
    • 查询用户示例
    1 using (var ctx = cfg.CreateDbContext())
    2     ctx.Set<User>().ToArray();
    3 //查询所有的记录
    4 
    5 using (var ctx = cfg.CreateDbContext())
    6     ctx.Set<User>().Find(5);
    7 //查询ID为5的这条记录

         语句描述:第一条语句是查询表中所有的记录,存储到User[]数组里面; 第二条语句查询ID为5的记录。

         注:语句生成的sql语句分别为: 

    1 SELECT t0.[ID], t0.[Name], t0.[Gender], t0.[Age]
    2 FROM [User] AS t0
    3 --查询表中所有的记录
    4  
    5 SELECT t0.[ID], t0.[Name], t0.[Gender], t0.[Age]
    6 FROM [User] AS t0
    7 WHERE ( t0.[ID] = 5 )
    8  --查询ID为5的这条记录

           示例源代码下载:https://files.cnblogs.com/xiaocaibaodao/Demo.rar 

           关系查询Demo下载:https://files.cnblogs.com/xiaocaibaodao/Demo1.rar

  • 相关阅读:
    一起谈.NET技术,深入ASP.NET 2.0的提供者模型(2) 狼人:
    一起谈.NET技术,从.NET中委托写法的演变谈开去(上):委托与匿名方法 狼人:
    一起谈.NET技术,将Flash 嵌入WPF 程序 狼人:
    一起谈.NET技术,数组排序方法的性能比较(中):Array.Sort<T> 实现分析 狼人:
    人一生当中最应该珍惜的十种人
    《程序员的第一年》复习一下C#的【封装 多态 继承 简单计算器源码实例】
    myeclipse 修改模板
    三星将在百思买零售店内开设1400家体验店
    谷歌Q3推Android本 蚕食自己平板市场
    Spring Setting
  • 原文地址:https://www.cnblogs.com/xiaocaibaodao/p/2778659.html
Copyright © 2011-2022 走看看