検索
ホームページ类库下载ネットクラスライブラリ.Net オープンソース マイクロ ORM フレームワークの評価

ORM とは何ですか?

.Net オープンソース マイクロ ORM フレームワークの評価

オブジェクト リレーショナル マッピング (英語: Object Relation Mapping、ORM、O/RM、または O/R マッピングと呼ばれます) は、さまざまなオブジェクト指向プログラミング言語を実装するために使用されるプログラミング テクノロジです。型システム データ間の変換。実際には、プログラミング言語で使用できる「仮想オブジェクト データベース」を作成します。

一般的な ORM には、次の 4 つの部分が含まれます:

永続クラス オブジェクトに対して CRUD 操作を実行する API。

クラスおよびクラス属性に関連するクエリを指定するために使用される API。

MAPPING METADATA を指定する API。ツール;

ORM 実装で DIRTYCHECKING、LAZY ASSOCIATION FETCHING、およびその他の最適化操作をトランザクション オブジェクトとともに実行できるようにするテクノロジー。

今回比較した.NET ORMフレームワーク

1. Entity Framework

公式サイト https://msdn.microsoft.com/zh-cn/data/ef.aspx

2. Dapper

公式サイト https: // github.com/StackExchange/dapper-dot-net

3. PetaPoco

公式ウェブサイト http://www.toptensoftware.com/petapoco/

操作性

2.実行効率

3. クロスデータベースの使用

1. 新しい C# コンソールを作成します

2. NuGet パッケージを管理するためにプロジェクト参照を右クリックしますオンラインでダウンロードして、Entity Framework をインストールします

.Net オープンソース マイクロ ORM フレームワークの評価

プロジェクトを右クリックして新しい項目を作成し、新しい項目を追加します ADO.NET Entity Data Model

ここでは CLN のデータベース名を使用します

.Net オープンソース マイクロ ORM フレームワークの評価

追加後、エンティティ モデル データ ウィザードが表示され、データベースから生成することを選択します。次のステップは、新しい接続を作成し、App.Config のエンティティ接続を CLNContext に設定することです

.Net オープンソース マイクロ ORM フレームワークの評価 次に、ダイアログ ボックスが表示されます -- どのデータベース オブジェクトをモデルに含めますか? ここでテーブルを確認し、[OK] をクリックすると、2 つの TT テンプレートが表示されます。ここに Edmx データベース モデルの関係図が表示されます

.Net オープンソース マイクロ ORM フレームワークの評価 次のステップは、Program.cs

static void Main(string[] args)
        {
            Stopwatch S = new Stopwatch();  //秒表对象 计时
            S.Start();

            var DBContext = new CLNContext();
            foreach (var item in DBContext.NT_Photo)
            {
                Console.WriteLine(item.PostIP);
            }
           
            Console.WriteLine(S.Elapsed);
            Console.ReadKey();

        }

に書かれているコードです。

.Net オープンソース マイクロ ORM フレームワークの評価NT_Photo テーブル。ここでは、クエリ速度が 5.9 秒かかることがわかります

Dapper.Net オープンソース マイクロ ORM フレームワークの評価

1. プログラム

2. NuGet は Dapper を参照します


Dapper は EF ほど強力ではありません。これは、EF によって生成された NT_Photo.cs モデル クラスです。をプロジェクトに追加し、Program.cs に移動してコードを記述します

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Dapper;
    using System.Diagnostics;
    using System.Threading;
    
    namespace DapperForsql
    {
        class Program
        {
            static void Main(string[] args)
            {
                
                Stopwatch w = new Stopwatch();
                w.Start();
                var str = "data source=.;initial catalog=CLN20140830;integrated security=True";
                SqlConnection Con = new SqlConnection(str);
                var list = Con.Query<NT_Photo>("select * from NT_Photo");
    
                foreach (var item in list)
                {
                    Console.WriteLine(item.PostIP);
                }
                Console.WriteLine(w.Elapsed);
                Console.ReadKey();
            }
        }
    }
  • .Net オープンソース マイクロ ORM フレームワークの評価Dapper が IDbConnection を拡張し、SqlConnection が IDbConnection を実装しているため、ここでは SqlConnertion オブジェクトを使用します。 Dapper を使用して Dapper の名前空間を参照します

  • ここでわかるように、Dapper は EF よりも 3.0 秒かかります

  • PetaPoco
1。また、NuGet を使用して参照します。 PetaPoco コンポーネント

3. App.Config で接続文字列を設定します

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="CLNContext" connectionString="data source=.;initial catalog=CLN20140830;integrated security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
.Net オープンソース マイクロ ORM フレームワークの評価4. PetaPoco をインストールすると、データベース アクセス コンテキストとモデル Model も自動的に生成されます。Models -> Database.tt を開き、ConnectionStringName = " を変更します。 CLNContext"; ここで App.Config の接続文字列と一致している必要があります。変更して保存すると、データベース アクセス コンテキストが自動的に生成されます。 Models -> Database.tt -> Database.cs

5.準備が完了したので、本題に入ります。ここで、Program.cs

static void Main(string[] args)
        {
           
            var Context = new CLNContext.CLNContextDB();
            Stopwatch s = new Stopwatch();
            s.Start();
            var list = Context.Query<NT_Photo>("select * from NT_Photo");
            foreach (var item in list)
            {
                Console.WriteLine(item.PostIP);
            }
            Console.WriteLine(s.Elapsed);
            Console.ReadKey();


        }

も入力します。PetaPoco にはデータベース アクセス コンテキスト CLNContextDB() もありますが、SQL ステートメントを記述する必要があります。まずクエリ速度を見てみましょう。

.Net オープンソース マイクロ ORM フレームワークの評価

在这里可以看到,PetaPoco貌似更快 PetaPoco用时2.4秒

其实PetaPoco更强大的是,它对模型做了增删改查的方法,这就非常方便了

 NT_Photo PP = new NT_Photo(); var res= PP.Insert();  

//res就是返回插入的数据的ID

对比结果:

这里可以看到EF,Dapper,PetaPoco 的差别了

NT_Photo 600多条数据

EF            ------   5.9秒

Dapper     -------  3.0秒

PetaPoco   -------  2.4秒

 

其实EF第一次的话,会慢一些,第一次会把一些模型数据加载到内存中,后面就非常快了,这里贴一个EF 暖机代码

//EF暖机
    using (var db = new CLNContext())
            {
                var objectContext = ((IObjectContextAdapter)db).ObjectContext;
                var mappingCollection = (System.Data.Entity.Core.Mapping.StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(System.Data.Entity.Core.Metadata.Edm.DataSpace.CSSpace);
                mappingCollection.GenerateViews(new System.Collections.Generic.List<System.Data.Entity.Core.Metadata.Edm.EdmSchemaError>());
            }

总结:每个ORM的存在都有它的价值,不能说哪个哪个好,EF是微软自家推出的,很多代码都是自动生成的,一句SQL语句都不用写,确实非常方便,但是EF的包很大,有5M多,而且微软封装好的也不太利于扩展,像写一些复杂的SQl语句就不是很方便了,Dapper 和PetaPoco相比下来都是比较轻的,而且用起来的话也是非常灵活的。哪一个更适合你的项目,用起来更顺手,才是最好的选择方案。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい