国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Net框架下-ORM框架LLBLGen的簡介

2019-11-17 02:33:54
字體:
來源:轉載
供稿:網友

Net框架下-ORM框架LLBLGen的簡介

Posted on 2015-02-12 17:12 樺林 閱讀(...) 評論(...) 編輯 收藏

》對于應用程序行業領域來說,涉及到Net框架的,在眾多支持大型項目的商用ORM框架中,使用最多的目前了解的主要有三款:

1、NHibernate(從java版移植來的Net版)、

2、微軟的EF、

3、還有就是今天提到的LLBLGen

》ORM之間的性能比較

從上圖的測試結果可以看出,傳統的手動編寫代碼訪問數據庫,例如手動編寫的ADO.NET,仍然是從數據庫中取值的最快捷的方式,性能依然最好。而相比于三大ORM框架來說由于NH的功能龐大EF的次之,LLBLGen相較于來說性能最好。當然對比ORM訪問數據庫的性能這一個側面并不能完全說明一切,緩存機制、延遲加載機制的配合使用已經可以大部分避免數據庫訪問性能損耗的影響。(題外話:既然傳統如Ado.net的訪問方式依然性能優異為何還要選用ORM的話題不做擴展)

》LLBLGen PRo是LLBLGen的數據庫訪問解決方案,她包含兩個部分:設計器(LLBLGen Pro designer)和運行時框架(LLBLGen Pro runtime framework).

》設計器生成的源碼除支持自身的運行時框架外,還支持另外三種數據庫映射框架產品:

  • Entity Framework 1.0和4.0
  • NHibernate 2.x:包括標準的Hibernate和Fluent NHibernate
  • LINQ to SQL

》LLBLGen Pro支持的數據庫種類眾多:諸如MS access 2000/XP/2003/2007/2010、SQL Server 2000/2005/2008/2008R2/Express/MSDE/SQL Server CE Desktop、Oracle 9i/10g/11g、PostgreSql 7.4+/8.x+、Firebird 1.5.x/2.x、IBM DB2 7.x/8.x/9.x(非AS/400)、MySQL 4.x,5.x (使用Core Lab/DevArt MySql .NET提供器)、Sybase Adaptive Server Enterprise(ASE)/SQL iAnywhere(ASA)。主流的幾大數據庫基本都包含在內,所有其框架適應數據庫的兼容能力自然可不必太擔心,同一套源碼可以同時支持多種數據庫,而不需要額外花太多精力考慮代碼數據庫兼容問題。

》LLBLGen的詳細了解可訪問官網 http://www.llblgen.com/ 各種介紹資料、文檔和代碼示例均有

》在建立完業務模型并轉化為規范的數據庫實體后,LLBLGen框架的使用可以基本使你完全脫離繁瑣的數據存儲及展現查詢的各種操作過程,而專心于業務邏輯的開發。

》以LLBLGen Pro runtime framework自身的運行時框架為例,設計器的代碼生成自動將各種表視圖存儲過程等對于的視圖模型Entidy、接口Interface、操作類等完整生成。業務中僅關心調用即可.

常用代碼整理如下:

using SD.LLBLGen.Pro.ORMSupportClasses;using FactoryClasses;using HelperClasses;using RelationClasses;using DBAdapter;using EntityClasses;using ViewClasses;namespace ORM_Demo{  public class BLLCFUser:IBLLCFUser{    按照規則自動生成的方法代碼,如下示例...(借鑒內部資料的整理)  }}1、視圖查詢例: Select * From View_CF_User_All Where RecordStatus<>'InActive' Order By UserID Descpublic ViewCFUserAllTypedView FetchAllUser(){    DataAccessAdapter adapter = new DataAccessAdapter();    try    {         ViewCFUserAllTypedView user = new ViewCFUserAllTypedView();         RelationPredicateBucket bucket = new RelationPredicateBucket();         SortExpression sorter = new SortExpression();         //加過濾條件         bucket.PredicateExpression.Add(ViewCFUserAllFields.RecordStatus != "InActive");         //加排序條件         sorter.Add(ViewCFUserAllFields.UserID | SortOperator.Descending);                        adapter.FetchTypedView(user.GetFieldsInfo(), user, bucket, 0, sorter, true);         return user;    }    catch    {        return null;    }    finally    {        adapter.Dispose();    }}對生成代碼的調用e.gORM_Demo orm = new ORM_Demo();ViewCFUserAllTypedView user = orm.FetchAllUser();if (user != null){    gridView.DataSource = user;    gridView.DataBind();}2、表(記錄集合)查詢例: Select * From CF_Userpublic EntityCollection<DerivedCFUserEntity> FetchUser(){    DataAccessAdapter adapter = new DataAccessAdapter();    try   {          EntityCollection<DerivedCFUserEntity> user = new EntityCollection<DerivedCFUserEntity>(new DerivedCFUserEntityFactory());          RelationPredicateBucket bucket = new RelationPredicateBucket();          SortExpression sorter = new SortExpression();          adapter.FetchEntityCollection(user, bucket, 0, sorter);          return user;    }    catch    {          return null;    }    finally    {         adapter.Dispose();    }}對生成代碼的調用e.gORM_Demo orm = new ORM_Demo();EntityCollection<DerivedCFUserEntity> user = orm.FetchUser();if (user != null){    gridView.DataSource = user;    gridView.DataBind();}3、表(某一記錄)查詢例: Select * From CF_User Where LoginName='Admin' And RecordStatus<>'Inactive'public DerivedCFUserEntity FetchUserInfo(string loginName){     DataAccessAdapter adapter = new DataAccessAdapter();     try     {         DerivedCFUserEntity user = new DerivedCFUserEntity();         RelationPredicateBucket bucket = new RelationPredicateBucket();         bucket.PredicateExpression.Add(CFUserFields.LoginName == loginName);         bucket.PredicateExpression.AddWithAnd(CFUserFields.RecordStatus != "Inactive");         user = (DerivedCFUserEntity)adapter.FetchNewEntity(new DerivedCFUserEntityFactory(), bucket);         return user;     }     catch     {         return null;     }     finally     {        adapter.Dispose();     }}對生成代碼的調用e.gORM_Demo orm = new ORM_Demo();DerivedCFUserEntity user = orm.FetchUserInfo("Admin");if (user.UserID>0){    lblLoginName.Text = user.LoginName;}3-2、多表(多表查詢 Linq實現)》》using (DataAccessAdapter adapter = new DataAccessAdapter()){    LinqMetaData metaData = new LinqMetaData(adapter);    var q = from t1 in metaData.CFEmployee        join t2 in metaData.CFCompany on t1.CompanyID equals t2.CompanyID        where t1.CompanyID < 100        select new { Addr = (t2.IRDAddress ?? "No Address"), t2.CreateUserID };}相當于select IsNull(t2.IRDAddress,"No Address"),t2.CreateUserIDfrom CFEmployee as t1inner join CFCompany as t2 on t1.CompanyID = t2.CompanyIDwhere t1.CompanyID < 100》》 using (DataAccessAdapter adapter = new DataAccessAdapter())  {       List<int> ids = new List<int>() { 1, 2, 3 };       LinqMetaData metaData = new LinqMetaData(adapter);       var q = from t1 in metaData.CFUser               where ids.Contains(t1.UserID)               select t1;   }等同于SELECT * FROM CF_USER WHERE USERID IN (1, 2, 3)》》using (DataAccessAdapter adapter = new DataAccessAdapter()){       LinqMetaData metaData = new LinqMetaData(adapter);       var q = from t1 in metaData.CFUser               join t2 in metaData.CFEmployee on               new { C = t1.RefRecordID, B = t1.CreateUserID }               equals new { C = t2.EmployeeID, B = t2.CreateUserID }               join t3 in metaData.CFAccount on               new { D = t1.CreateUserID, E = t1.ModifyUserID }              equals new { D = t3.CreateUserID, E = t3.ModifyUserID }              select t1;}等同于SELECT LPA_L1.* FROM [CF_User] as [LPA_L1]  INNER JOIN [CF_Employee] as [LPA_L2]  ON  ( [LPA_L1].[RefRecordID] = [LPA_L2].[EmployeeID] AND [LPA_L1].[CreateUserID] = [LPA_L2].[CreateUserID]))INNER JOIN [CFAccount] as [LPA_L3]  ON  ( [LPA_L1].[CreateUserID] = [LPA_L3].[CreateUserID]) AND  [LPA_L1].[ModifyUserID] = [LPA_L3].[ModifyUserID])4、Insert操作(單表記錄新增)例: Insert CF_User(A,B,C) Values(&hellip;…)public bool Add(string loginName, string passWord){    DataAccessAdapter adapter = new DataAccessAdapter();    adapter.StartTransaction(IsolationLevel.ReadCommitted, "");    try    {        DerivedCFUserEntity user = new DerivedCFUserEntity();        user.PrivClassID = 8;        user.RefTable = "CF_Employee";        user.RefRecordID = 1;        user.LoginName = loginName;        user.Password = password;        user.LanguageSelect = "CN";        user.IsManager = "N";        user.RegionalSetting = "zh-CN";        user.RecordStatus = "Active";        user.CreateUserID = 1;        user.CreateDate = DateTime.Now;        user.ModifyUserID = 1;        user.ModifyDate = DateTime.Now;        adapter.SaveEntity(user);        adapter.Commit();        return true;    }    catch   {        adapter.Rollback();        return false;    }    finally    {        adapter.Dispose();    }}對生成代碼的調用e.gORM_Demo orm = new ORM_Demo();string loginName = "Amdin";string password = "111111";if (orm.Add(loginName, password)){    Alert("Success");}else{    Alert("Fail");}5、Update操作(單表記錄修改)例: Update CF_User Set RecordStatus='Inactive' Where UserID=100 //主鍵條件public bool Modify(int userID){    DataAccessAdapter adapter = new DataAccessAdapter();    adapter.StartTransaction(IsolationLevel.ReadCommitted, "");    try    {        DerivedCFUserEntity user = new DerivedCFUserEntity(userID);                        if (user.UserID < 1)        {            return false;        }        else        {             user.IsNew = false;             adapter.FetchEntity(user);             user.RecordStatus = "Inactive";             adapter.SaveEntity(user);             adapter.Commit();             return true;                           }                  }    catch    {         adapter.Rollback();         return false;    }    finally    {         adapter.Dispose();    }}對生成代碼的調用e.gORM_Demo orm = new O
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苗栗县| 白朗县| 双柏县| 孝感市| 陆河县| 饶河县| 科技| 三亚市| 东乡县| 任丘市| 抚宁县| 志丹县| 兴城市| 佛冈县| 宜川县| 伊宁市| 鹿泉市| 阳曲县| 勃利县| 安吉县| 洛隆县| 凤山县| 长泰县| 普陀区| 崇文区| 华宁县| 锦州市| 科技| 拜泉县| 巫山县| 红桥区| 怀安县| 布尔津县| 淮阳县| 临高县| 兴山县| 古交市| 海阳市| 石河子市| 宜阳县| 尉犁县|