微型ORM FluentData介绍(一)

概述

FluentData(http://fluentdata.codeplex.com/) 的设计者 Lars-Erik Kindblad 谈到:

当前市面上的 ORM 框架,如 Entity Framework 和 NHibernate,都过于复杂而且难于学习。此外,由于这些框架自身抽象的查询语言以及从数据库到 .NET 对象的映射太过麻烦,导致它们生成的 SQL 都很低效。
FluentData 另辟蹊径,它是一个轻量级框架,拥有简单的 fluent API 并且很容易学会。

与其他微型 ORM(如 Dapper 和 Massive)类似,FluentData 关注性能和易用性。它允许开发人员拥有对 SQL 较多的控制,而不是依赖 ORM 进行自动生成。它不仅可以使用 SQL 来执行查询、增添和更新操作,还可以支持使用存储过程和事务。根据文档描述,FluentData 可以在不改动已有结构的情况下,与任何业务对象一同工作。
  以下是 FluentData 的一些其他特性:

  • 多结果集(Multiple Result Set):在一次数据库操作下返回多个数据集;
  • 开发人员可使用强类型对象或动态对象;
  • 可为创建时需要特殊处理的复杂对象自定义实体工厂(Custom Entity Factory);
  • 具有添加其他数据库支持的能力。
      FluentData 需要 .NET 4.0,并支持 SQL Server、SQL Azure、SQL Server Compact 以及使用 .NET 驱动的 Oracle 和 MySQL。

环境准备

在MySql数据库设定如下表:

authors表和books

create table if not exists `authors` (
  `authorid` int not null auto_increment,
  `firstname` varchar(100) not null,
  `middlename` varchar(100),
  `lastname` varchar(100) not null,
  primary key (`authorid` asc)
);

create table if not exists `books` (
 `bookid` int not null auto_increment,
 `title` varchar(200) not null,
 `authorid` int,
 `isbn` varchar(30),
 primary key (`bookid` asc)
);

使用VS2012新建一个控制台应用程序的测试工程FluentTest

微型ORM FluentData介绍(一)_第1张图片
新建项目

直接使用NuGet引用FluentData的库:
微型ORM FluentData介绍(一)_第2张图片
NuGet

微型ORM FluentData介绍(一)_第3张图片
Install-Package FluentData

由于我们测试项目使用MySQL所以需要下载相应的库, 点此下载
至此我们的项目以及建立完成。

使用FluentData

  1. 配置连接字符串:


    
  
  1. 对应上面建立的2个表建立2个实体类:

 public class Author
    {
        public int authorid { get; set; }
        public string firstname { get; set; }
        public string middlename { get; set; }
        public string lastname { get; set; }

    }

    public class Book
    {
        public int bookid { get; set; }
        public string title { get; set; }
        public string isbn { get; set; }
        public int authorid { get; set; }
    }
}

可以看到这里的类的字段是需要和数据库的表字段一一对应,这在实际使用过程中会造成一些麻烦,在下一篇里我们再详细介绍不匹配的情况下如何处理。

  1. 引用库:

using FluentData;
  1. 创建并且初始化一个IDbContext

它是我们与数据库操作中的上下文,所有的有关数据操作都调用它下面的方法,其中testDBContext是我们配置的连接字符串的名称,因为我们采用的数据库是MySQL所以使用MySqlProvider

public static IDbContext GetDBContext()
        {
            return new DbContext().ConnectionStringName("testDBContext", new MySqlProvider());
        }
  1. 添加数据:

            var authID = GetDBContext().Insert("authors")
         .Column("firstname", "Joe")
         .Column("middlename", "Mical")
         .Column("lastname", "KT")
         .ExecuteReturnLastId();

            authID = GetDBContext().Insert("authors")
            .Column("firstname", "Ser")
            .Column("middlename", "Mifrretcal")
            .Column("lastname", "Dew")
            .ExecuteReturnLastId();

 GetDBContext().Insert("books")
         .Column("title", "Python学习")
         .Column("authorid", "1")
         .Column("isbn", "000321")
         .ExecuteReturnLastId();

             GetDBContext().Insert("books")
           .Column("title", "领域建模")
           .Column("authorid", "2")
           .Column("isbn", "000333")
           .ExecuteReturnLastId();
  1. 查询数据

Book Book = GetDBContext().Sql(@"select * from books
                where bookid = 1").QuerySingle();
List auths = GetDBContext().Sql(@"select * from authors
               ").QueryMany();

你可能感兴趣的:(微型ORM FluentData介绍(一))