当前位置: 首页 > 工具软件 > FluentData > 使用案例 >

FluentData

梅玉堂
2023-12-01

核心概念

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(); 
 类似资料:

相关阅读

相关文章

相关问答