fluentdata添加oracle,微型ORM FluentData介绍(一)

概述

当前市面上的 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

fae9a2f7ebc8

新建项目

直接使用NuGet引用FluentData的库:

fae9a2f7ebc8

NuGet

fae9a2f7ebc8

Install-Package FluentData

由于我们测试项目使用MySQL所以需要下载相应的库,点此下载

至此我们的项目以及建立完成。

使用FluentData

配置连接字符串:

对应上面建立的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; }

}

}

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

引用库:

using FluentData;

创建并且初始化一个IDbContext

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

public static IDbContext GetDBContext()

{

return new DbContext().ConnectionStringName("testDBContext", new MySqlProvider());

}

添加数据:

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();

查询数据

Book Book = GetDBContext().Sql(@"select * from books

where bookid = 1").QuerySingle();

List auths = GetDBContext().Sql(@"select * from authors

").QueryMany();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值