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

posted @ 2012-11-20 11:00  小菜来报道  阅读(3804)  评论(14编辑  收藏  举报