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

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

高洛峰
リリース: 2016-10-14 17:57:39
オリジナル
1941 人が閲覧しました

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相比下来都是比较轻的,而且用起来的话也是非常灵活的。哪一个更适合你的项目,用起来更顺手,才是最好的选择方案。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート