FluentData微型ORM

  最近在幫朋友作一個簡單管理系統,由於筆者夠懶,可是使用過的NHibernate用來作這中項目又太不實際了,索性百度了微型ORM,FluentData是第一個跳入我眼睛的詞。簡單的瞭解下FluentData使用,主要看看是否是符合筆者的要求。嗯……嗯……反應還不錯,API使用也很簡單,參數化查詢、分頁什麼的都有了,好了就它了,下面仍是本篇的正題,怎麼使用它。數據庫

 一、下載

  http://fluentdata.codeplex.com/ide

  這裏須要注意的是,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

 二、使用

  說說簡單的增、刪、改、查,建立而且初始化一個IDbContext,函數中第一個參數爲數據庫連接字符串,第二個參數爲數據庫類型this

public static IDbContext Context()
        {
            var context = new DbContext().ConnectionString(ConnectionString, new SqlServerProvider());
            return context;
        }

新增使用:spa

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

Orcode

var Insert = FluentDataHelper.Context().Insert("Membership")
                      .Column("Name", Name)
                      .Column("Address", Address);     
if (ImageByte != null) Insert.Column("Image", ImageByte); int MembershipId = Insert.ExecuteReturnLastId<int>();

 刪除使用:orm

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

Or對象

int RowId = FluentDataHelper.Context().Delete("Membership").Where("Id", Id).Execute();

修改使用:blog

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

Or事務

var Update = FluentDataHelper.Context().Update("Membership")
                     .Column("Name", Name)
                     .Where("Id", EditId);

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

                int RowId = Update.Execute();

 查詢使用:

//返回單個值
int RowId = FluentDataHelper.Context().Select<int>("Count(1)")
                         .From("Membership")
                         .Where("Tel = @Tel").Parameter("Tel", Tel)
                        .AndWhere("Id != @Id").Parameter("Id", EditId)
                         .QuerySingle();
//返回實體
MembershipEntity Entity = FluentDataHelper.Context().Select<MembershipEntity>("*")
                    .From("Membership")
                    .Where("Id = @Id").Parameter("Id", EditId)
                    .QuerySingle();
//返回多個對象
List<MembershipGroupEntity> ListGroup = FluentDataHelper.Context().Select<MembershipGroupEntity>("*")
                .From("MembershipGroup")
                .QueryMany();
//多表關聯及分頁
var select = FluentDataHelper.Context()
                  .Select<VehicleEntity>("Vehicle.*,AdminUser.Name as AdminName,Membership.Name as MembershipName,Membership.Tel,Membership.CardId,Membership.Address,Membership.Source")
                  .From("Vehicle left join AdminUser on Vehicle.AdminId = AdminUser.Id left join Membership on Vehicle.MembershipId = Membership.Id")
                  .OrderBy("Vehicle.Time desc")
                  .Paging(pageInfo.PageIndex, pageInfo.PageSize);

            if (!string.IsNullOrEmpty(Name))
            { 
                select.AndWhere("Membership.Name like @Name").Parameter("Name", string.Format("%{0}%", Name));
            }
            if (!string.IsNullOrEmpty(Code))
            {
                select.AndWhere("Code = @Code").Parameter("Code", Code);
            }

            this.GridViewVehicle.DataSource = select.QueryMany();

事務使用:

//反生異常,事務自動回滾
using (var context = FluentDataHelper.Context().UseTransaction(true))
                {
                    context.Sql("update Membership set Name = @0 where Id = @1")
                                .Parameters("李四", 12)
                                .Execute();

                    context.Sql("update Product set Name = @0 where Id = @1")
                                .Parameters("Product不存在數據庫中", 1)
                                .Execute();
                    context.Commit();
                }

好了,基本簡單的使用到此就已經結束了,若是有興趣的朋友能夠去看看這個的源碼,這個是開源的,並且拓展性也是很不錯的。

相關文章
相關標籤/搜索