51Testing软件测试论坛

标题: FluentData微型ORM [打印本页]

作者: 奇犽    时间: 2018-4-27 11:03
标题: FluentData微型ORM
1、下载


  这里需要注意的是,FluentData需要.NET4.0的支持,同时支持dynamic,支持的数据库有:

MS SQL Server
MS SQL Server Compact 4.0
MS SQL Azure
MS Access
Oracle
MySQL
SQLite
PostgreSQL
IBM DB2
Sybase
 2、使用
  说说简单的增、删、改、查,创建并且初始化一个IDbContext,函数中第一个参数为数据库链接字符串,
第二个参数为数据库类型

  1. public static IDbContext Context()
  2.         {
  3.             var context = new DbContext().ConnectionString(ConnectionString, new SqlServerProvider());
  4.             return context;
  5.         }
  6. 新增使用:

  7. var MembershipId = FluentDataHelper.Context().Sql("insert into Membership(Name,Address) values(@0,@1)").Parameters("张三", "长沙").ExecuteReturnLastId<int>();
  8. Or

  9. 复制代码
  10. var Insert = FluentDataHelper.Context().Insert("Membership")
  11.                       .Column("Name", Name)
  12.                       .Column("Address", Address);     
  13.    
  14.                 if (ImageByte != null)
  15.                     Insert.Column("Image", ImageByte);

  16.                 int MembershipId = Insert.ExecuteReturnLastId<int>();
复制代码

复制代码
删除使用:

  1. int RowId = FluentDataHelper.Context().Sql("delete Membership where Id = @Id").Parameter("Id", Id).Execute();
  2. Or

  3. int RowId = FluentDataHelper.Context().Delete("Membership").Where("Id", Id).Execute();
  4. 修改使用:

  5. int RowId = FluentDataHelper.Context().Sql("update Membership set Name = @Name where Id = @Id").Parameter("Name", Name).Parameter("Id", EditId).Execute();
  6. Or

  7. 复制代码
  8. var Update = FluentDataHelper.Context().Update("Membership")
  9.                      .Column("Name", Name)
  10.                      .Where("Id", EditId);

  11.                 if (ImageByte != null)
  12.                     Update.Column("Image", ImageByte);

  13.                 int RowId = Update.Execute();
复制代码

复制代码
查询使用:

复制代码
//返回单个值
  1. int RowId = FluentDataHelper.Context().Select<int>("Count(1)")
  2.                          .From("Membership")
  3.                          .Where("Tel = @Tel").Parameter("Tel", Tel)
  4.                         .AndWhere("Id != @Id").Parameter("Id", EditId)
  5.                          .QuerySingle();
  6. 复制代码
  7. //返回实体
  8. MembershipEntity Entity = FluentDataHelper.Context().Select<MembershipEntity>("*")
  9.                     .From("Membership")
  10.                     .Where("Id = @Id").Parameter("Id", EditId)
  11.                     .QuerySingle();
  12. //返回多个对象
  13. List<MembershipGroupEntity> ListGroup = FluentDataHelper.Context().Select<MembershipGroupEntity>("*")
  14.                 .From("MembershipGroup")
  15.                 .QueryMany();
  16. 复制代码
  17. //多表关联及分页
  18. var select = FluentDataHelper.Context()
  19.                   .Select<VehicleEntity>("Vehicle.*,AdminUser.Name as AdminName,Membership.Name as MembershipName,Membership.Tel,Membership.CardId,Membership.Address,Membership.Source")
  20.                   .From("Vehicle left join AdminUser on Vehicle.AdminId = AdminUser.Id left join Membership on Vehicle.MembershipId = Membership.Id")
  21.                   .OrderBy("Vehicle.Time desc")
  22.                   .Paging(pageInfo.PageIndex, pageInfo.PageSize);

  23.             if (!string.IsNullOrEmpty(Name))
  24.             {
  25.                 select.AndWhere("Membership.Name like @Name").Parameter("Name", string.Format("%{0}%", Name));
  26.             }
  27.             if (!string.IsNullOrEmpty(Code))
  28.             {
  29.                 select.AndWhere("Code = @Code").Parameter("Code", Code);
  30.             }

  31.             this.GridViewVehicle.DataSource = select.QueryMany();
复制代码

复制代码
事务使用:

复制代码
//反生异常,事务自动回滚
  1. using (var context = FluentDataHelper.Context().UseTransaction(true))
  2.                 {
  3.                     context.Sql("update Membership set Name = @0 where Id = @1")
  4.                                 .Parameters("李四", 12)
  5.                                 .Execute();

  6.                     context.Sql("update Product set Name = @0 where Id = @1")
  7.                                 .Parameters("Product不存在数据库中", 1)
  8.                                 .Execute();
  9.                     context.Commit();
  10.                 }
复制代码

复制代码
好了,基本简单的使用到此就已经结束了,如果有兴趣的朋友可以去看看这个的源码,这个是开源的,而且拓
展性也是很不错的。


作者: qqq911    时间: 2018-4-27 13:11
感谢分享
作者: wahaha51testing    时间: 2019-8-4 21:17
确实,FluentData框架使用起来很方便的,

我已经在2个项目中使用此框架,

代码质量和性能都很不错!
作者: Miss_love    时间: 2020-12-25 15:11
看看




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2