最近在幫朋友做一個簡單管理系統,因為筆者夠懶,但是使用過的NHibernate用來做這中項目又太不實際了,索性百度了微型ORM,FluentData是第一個跳入我眼睛的詞。簡單的了解下FluentData使用,主要看看是不是符合筆者的要求。嗯……嗯……反應還不錯,API使用也很簡單,參數化查詢、分頁什麼的都有了,好了就它了,下面還是本篇的正題,怎麼使用它。
1、下載下傳
http://fluentdata.codeplex.com/
這裡需要注意的是,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,函數中第一個參數為資料庫連結字元串,第二個參數為資料庫類型
public static IDbContext Context()
{
var context = new DbContext().ConnectionString(ConnectionString, new SqlServerProvider());
return context;
}
新增使用:
var MembershipId = FluentDataHelper.Context().Sql("insert into Membership(Name,Address) values(@0,@1)").Parameters("張三", "長沙").ExecuteReturnLastId<int>();
Or
var Insert = FluentDataHelper.Context().Insert("Membership")
.Column("Name", Name)
.Column("Address", Address);
if (ImageByte != null)
Insert.Column("Image", ImageByte);
int MembershipId = Insert.ExecuteReturnLastId<int>();
删除使用:
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();
修改使用:
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();
}
好了,基本簡單的使用到此就已經結束了,如果有興趣的朋友可以去看看這個的源碼,這個是開源的,而且拓展性也是很不錯的。
轉載于:https://www.cnblogs.com/jiangbiao/p/5359068.html