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的这条记录

 

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

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

你可能感兴趣的:(Data)