FluentData

核心概念

DbContext类

这是FluentData的核心类,可以通过配置ConnectionString来定义这个类,如何连接数据库和对具体的哪个数据库进行数据查询操作。

DbCommand类

这个类负责在相对应的数据库执行具体的每一个数据操作。

Builders

Builder用来创建Insert, Update, Delete等相关的DbCommand实例。

Mapping

FluentData可以将SQL查询结果自动映射成一个POCO(POCO - Plain Old CLR Object)实体类,也可以转换成一个dynamic类型。

Query

Mapping

1.自动映射

   List<Product> products = Context.Sql(@"select * from Product")
                                   .QueryMany<Product>(); 

2.映射到自定义的Collection

ProductionCollection products = Context.Sql("select * from Product").QueryMany<Product, ProductionCollection>();

3.使用dynamic自定义映射规则

   List<Product> products = Context.Sql(@"select * from Product") 
                .QueryMany<Product>(Custom_mapper_using_dynamic); 

    public void Custom_mapper_using_dynamic(Product product, dynamic row) 
    { 
        product.ProductId = row.ProductId; 
        product.Name = row.Name; 
    } 

4.使用datareader进行自定义映射

public void Custom_mapper_using_datareader(Product product, IDataReader row) 
   { 
        product.ProductId = row.GetInt32("ProductId"); 
        product.Name = row.GetString("Name"); 
    } 

当你需要映射到一个复合类型时,可以使用QueryComplexMany或者QueryComplexSingle。

多结果集

using (var command = Context.MultiResultSql) 
   { 
        List<Category> categories = command.Sql( 
               @"select * from Category; 
                select * from Product;").QueryMany<Category>(); 

        List<Product> products = command.QueryMany<Product>(); 
 } 

执行第一个查询时,会从数据库取回数据,执行第二个查询的时候,FluentData可以判断出这是一个多结果集查询,所以会直接从第一个查询里获取需要的数据。

分页

List<Product> products = Context.Select<Product>("p.*, c.Name as Category_Name") 
                       .From(@"Product p 
                        inner join Category c on c.CategoryId = p.CategoryId") 
                       .Where("p.ProductId > 0 and p.Name is not null") 
                       .OrderBy("p.Name") 
                       .Paging(1, 10).QueryMany(); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值